iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >JavaMail 保证邮件发送成功的方法是什么
  • 428
分享到

JavaMail 保证邮件发送成功的方法是什么

2023-06-17 05:06:45 428人浏览 薄情痞子
摘要

JavaMail 保证邮件发送成功的方法是什么,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。使用过JavaMail的api发送邮件的人可能会有这样一个疑惑:我如何知道我调用

JavaMail 保证邮件发送成功的方法是什么,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

使用过JavaMail的api发送邮件的人可能会有这样一个疑惑:我如何知道我调用该api发送的邮件是否成功呢?一般的开放的api给我们调用都会有个返回值或者状态码,来告诉我们执行成功与否。但是JavaMail却没有提供这样一个返回值。

所以在调用JavaMail发送邮件的时候,我们只能通过catch异常的方式来判断邮件是否发送成功。我们认为只要没有异常发生,那么邮件就能发送成功。那么我们就来分析一下JavaMail为什么没有提供返回值,和通过异常判断邮件发送成功状态是否靠谱。

JavaMail发送邮件原理

在使用JavaMail进行发送邮件时,我们必须提供一个邮件会话。创建邮件会话的过程如下:

Properties props = new Properties();         // 发送邮件的服务器的IP和端口         props.put("mail.smtp.host", MAIL_SMTP_HOST);         props.put("mail.smtp.port", MAIL_SMTP_PORT);         // 是否需要身份验证         props.put("mail.smtp.auth", "true");          props.put("mail.smtp.SocketFactory.class", "javax.net.ssl.SSLSocketFactory");         Session session = Session.getDefaultInstance(props, new Authenticator() {             protected PassWordAuthentication getPasswordAuthentication() {             // 登陆邮件发送服务器的用户名和密码                 return new PasswordAuthentication(MAIL_SENDER_MAIL, MAIL_SENDER_PASS);             }         });

分析一下代码。在创建Session之前我们先创建一个Properties,这个Properties设置了这样几个参 数:mail.smtp.host、mail.smtp.port、mail.smtp.auth和 mail.smtp.socketFactory.class。在创建Session的时候还要传入发送邮件使用的用户名及密码。

发送邮件代码如下:

//使用JavaMail发送邮件的5个步骤
        //1、创建session
         Session session = Session.getInstance(prop);
         //开启Session的debug模式,这样就可以查看到程序发送Email的运行状态
         session.setDebug(true);
         //2、通过session得到transport对象
         Transport ts = session.getTransport();
         //3、使用邮箱的用户名和密码连上邮件服务器,发送邮件时,发件人需要提交邮箱的用户名和密码给smtp服务器,用户名和密码都通过验证之后才能够正常发送邮件给收件人。
         ts.connect("smtp.sohu.com", "gacl", "邮箱密码");
         //4、创建邮件
         Message message = createSimpleMail(session);
         //5、发送邮件
         ts.sendMessage(message, message.getAllRecipients());
         //关闭连接
         ts.close();

总结发送邮件过程主要有以下几个步骤:

创建包含邮件服务器的网络链接的Session对象
2.创建代表邮件内容的Message对象
3.创建Transport对象
4.链接服务器
5.发送Message
6.关闭链接

由于Transport只是一个抽象类,所以这里在发送Message的时候用调用的方法ts.sendMessage实际上是调用的Transport的实现类SMTPTransport的sendMessage方法。

而SMTPTransport的sendMessage方法则依赖SMTP协议进行邮件的发送。

所以,当javamail使用smtp服务发送邮件时,当你把邮件发送到smtp服务器的时候,你只能得到已经发送到smtp的队列中的状态,但是邮件服务器是否能发送成功,你是得不到的。就是说,你不能保证邮件发送一定成功。 这就取决于SMTP协议的内容传输了。

但是SMTP协议如果传输失败,是会报错的。SMTP由tcp提供的可靠的数据传输服务把邮件消息从发信人的邮件服务器传送到收信人的邮件服务器。

所以我们可以认为当我们调用JavaMail发送邮件时,如果程序没有报错则表示邮件发送成功。

SMTP工作机制

SMTP通常有两种工作模式:发送SMTP和接收SMTP。

具体工作方式为:发送SMTP在接到用户的邮件请求后,判断此邮件是否为本地邮件,若是直接投送到用户的邮箱,否则向dns查询远端邮件服务器的 MX纪录,并建立与远端接收SMTP之间的一个双向传送通道,此后SMTP命令由发送SMTP发出,由接收SMTP接收,而应答则反方面传送。一旦传送通 道建立,SMTP发送者发送MAIL命令指明邮件发送者。如果SMTP接收者可以接收邮件则返回OK应答。SMTP发送者再发出RCPT命令确认邮件是否 接收到。如果SMTP接收者接收,则返回OK应答;如果不能接收到,则发出拒绝接收应答(但不中止整个邮件操作),双方将如此重复多次。当接收者收到全部 邮件后会接收到特别的序列,如果接收者成功处理了邮件,则返回OK应答即可。

SMTP工作过程

简单邮件传输协议(SMTP)是一种基于文本的电子邮件传输协议,是在因特网中用于在邮件服务器之间交换邮件的协议。SMTP是应用层的服务,可以适应于各种网络系统。

SMTP的命令和响应都是基于文本,以命令行为单位,换行符为CR/LF。响应信息一般只有一行,由一个3位数的代码开始,后面可附上很简短的文字说明。

SMTP要经过建立连接、传送邮件和释放连接3个阶段。具体为:

(1)建立TCP连接。
(2)客户端向服务器发送HELO命令以标识发件人自己的身份,然后客户端发送MAIL命令。
(3)服务器端以OK作为响应,表示准备接收。
(4)客户端发送RCPT命令。
(5)服务器端表示是否愿意为收件人接收邮件。
(6)协商结束,发送邮件,用命令DATA发送输入内容。
(7)结束此次发送,用QUIT命令退出。

SMTP服务器基于DNS中的邮件交换(MX)记录路由电子邮件。电子邮件系统发邮件时是根据收信人的地址后缀来定位邮件服务器的。SMTP通过用户代理程序(UA)完成邮件的编辑、收取和阅读等功能;通过邮件传输代理程序(MTA)将邮件传送到目的地。

关于JavaMail 保证邮件发送成功的方法是什么问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注编程网精选频道了解更多相关知识。

--结束END--

本文标题: JavaMail 保证邮件发送成功的方法是什么

本文链接: https://www.lsjlt.com/news/287251.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • JavaMail 保证邮件发送成功的方法是什么
    JavaMail 保证邮件发送成功的方法是什么,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。使用过JavaMail的api发送邮件的人可能会有这样一个疑惑:我如何知道我调用...
    99+
    2023-06-17
  • JavaMail发送HTML邮件的方法是什么
    这篇文章主要介绍了 JavaMail发送HTML邮件的方法是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇 JavaMail发送HTML邮件的方法是什么文章都会有所收获,下面我们一起来看看吧。form.ht...
    99+
    2023-06-03
  • 用JavaMail写发送邮件程序碰到的问题是什么
    用JavaMail写发送邮件程序碰到的问题是什么,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。用JavaMail写发送邮件程序碰到的问题这几天在用JavaMai...
    99+
    2023-06-03
  • 利用JavaMail怎么实现一个邮件发送功能
    这篇文章将为大家详细讲解有关利用JavaMail怎么实现一个邮件发送功能,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。用java发邮件,必须要导入新的包   &...
    99+
    2023-05-31
    javamail ava
  • 基于JavaMail的Java实现复杂邮件发送功能
    上一篇文章 基于 JavaMail 的 Java 邮件发送:简单邮件发送 讲解了邮件的基本协议,JavaMail组件,创建并发送一封简单邮件的详细步骤。本文将介绍如何创建并发送一封包含图片和附件的复杂邮件。一封复杂的邮件内容可以看做是由很多...
    99+
    2023-05-31
    javamail java 邮件发送
  • 利用JavaMail怎么实现一个邮件发送与接收功能
    利用JavaMail怎么实现一个邮件发送与接收功能?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。1、JavaMail 介绍  JavaMail 是sun公司(现以被甲骨文收...
    99+
    2023-05-31
    javamail ava
  • 怎么在Java中利用JavaMail实现一个邮件发送功能
    这期内容当中小编将会给大家带来有关怎么在Java中利用JavaMail实现一个邮件发送功能,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。1. 电子邮件协议电子邮件的在网络中传输和网页一样需要遵从特定的协议...
    99+
    2023-05-31
    java javamail ava
  • Python实现邮件发送功能的方法详解
    目录利用 python 发送普通邮件认识发送邮件流程认识邮件协议smtplib 模块email 包发送邮件小案例发送邮件的避坑总结邮件自动化篇章所需的新模块: smtplib 邮件协...
    99+
    2024-04-02
  • ssl邮件发送流程是什么
    SSL邮件发送流程如下:1. 客户端(发件人)建立与邮件服务器的连接。2. 客户端发送与SMTP(Simple Mail Trans...
    99+
    2023-09-05
    ssl
  • c# 两种发送邮件的方法
    目录一、两种发送邮件的方法二、遇到的问题 三、示例System.Web.MailSystem.Net.Mail一、两种发送邮件的方法 有用到两种方式发邮件,一种是用Syst...
    99+
    2024-04-02
  • restymail的简单发送邮件方法
    目录1.配置MailPlugin插件2.发送普通的文本邮件3.发送html邮件4.发送附件邮件1. 配置MailPlugin插件 public void configPlugin(P...
    99+
    2024-04-02
  • python实现发送邮件的方法
    这篇文章将为大家详细讲解有关python实现发送邮件的方法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1.设置邮箱,如下图所示2.设置过程如下图所示:设置完成后,添加如下代码:# coding...
    99+
    2023-06-06
  • Spring Boot集成JavaMailSender发送邮件功能的实现
    目录前言集成步骤添加依赖邮件配置信息邮件配置类代码实现发送简单邮件邮件实体类业务实现类测试类扩展功能发送Html内容的邮件业务实现类测试类发送带附件邮件业务实现类测试类发送模板邮件添...
    99+
    2024-04-02
  • vps群发邮件的方法是什么
    VPS群发邮件的方法有以下几种:1. 使用邮件群发软件:在VPS上安装邮件群发软件,例如Mailchimp、SendinBlue等,...
    99+
    2023-09-14
    vps
  • Python基于SMTP发送邮件的方法
    目录构建消息对象发送邮件要点在很多时候,使用 Python 发送邮件可能没有办法使用邮件服务器提供的 API,因为不是所有的邮件服务商都会提供 API 供客户使用的。 通常使用邮件 ...
    99+
    2024-04-02
  • Asp.net发送邮件的方法有哪些
    在ASP.NET中,发送邮件的方法有以下几种:1. 使用SMTP客户端类:可以使用`System.Net.Mail.SmtpClie...
    99+
    2023-08-12
    Asp.net
  • PHP通过邮件接口实现邮件发送的方法
    PHP是一门十分强大的编程语言,可以用于开发各种类型的应用程序。其中,邮件发送功能是Web应用程序中非常重要的一部分。幸运的是,PHP提供了多种邮件发送API和库,方便开发者使用。本文将介绍通过PHP邮件接口实现邮件发送的方法。一、设置SM...
    99+
    2023-05-22
    PHP 邮件接口 发送方法
  • PHP大文件发送不成功的解决方法
    在进行 PHP 程序开发中,经常会遇到需要发送大文件的情况。然而,有时候在尝试发送大文件时会遇到发送不成功的问题。本文将介绍解决 PHP 大文件发送不成功的方法,并提供具体的代码示例供...
    99+
    2024-03-08
    解决方法 大文件处理 php文件发送 内存占用
  • 使用SpringBoot发送邮件的方法详解
    目录第一步,导jar包第二步,申请email授权密码第三步,编写yml文件第四步,编写工具类第五步,编写controller类第六步,测试第一步,导jar包 <!--E...
    99+
    2023-05-19
    SpringBoot发送邮件 SpringBoot邮件
  • PHP邮件发送类PHPMailer的使用方法
    本篇内容主要讲解“PHP邮件发送类PHPMailer的使用方法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“PHP邮件发送类PHPMailer的使用方法”吧!PHPMailer是一个专门用于ph...
    99+
    2023-06-17
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作