javamail如何处理退信,第1张

用 Apache James 搭建邮件服务器来收发邮件实践(一)

javamail发送邮件

使用Common Email轻松发送邮件推荐群组:Python更多企业应用

比如由于域名错误,用户名不存在,或者其他原因造成的无法发送的错误。

不要求分析错误原因,只要求1。识别是否是退信。2。得到接收失败的邮件地址。

我的考虑是可以根据邮件主题来标识,但是不通用,另外不知道邮件里,有没有退信标志位,以及接收失败的地址标识。如果有就好办了

推荐链接Java开发新方式:专注UI,快速开发!

1SMTP协议

用户连上邮件服务器后,要想给它发送一封电子邮件,需要遵循一定的通迅规则,SMTP协议就是用于定义这种通讯规则的。

因而,通常我们也把处理用户smtp请求(邮件发送请求)的邮件服务器称之为SMTP服务器。(25)

2POP3协议

同样,用户若想从邮件服务器管理的电子邮箱中接收一封电子邮件的话,他连上邮件服务器后,也需要遵循一定的通迅格式,POP3协议用于定义这种通讯格式。

因而,通常我们也把处理用户pop3请求(邮件接收请求)的邮件服务器称之为POP3服务器。(110)

下图用于演示两帐户相互发送邮件的过程

31JavaMail API按其功能划分通常可分为如下三大类:

创建和解析邮件内容的API :Message类是创建和解析邮件的核心API,它的实例对象代表一封电子邮件。 

32发送邮件的API:Transport类是发送邮件的核心API类,它的实例对象代表实现了某个邮件发送协议的邮件发送对象,例如SMTP协议。 

接收邮件的API:Store类是接收邮件的核心API类,它的实例对象代表实现了某个邮件接收协议的邮件接收对象,例如POP3协议。 

33Session类 

Session类用于定义整个应用程序所需的环境信息,以及收集客户端与邮件服务器建立网络连接的会话信息,如邮件服务器的主机名、端口号、采用的邮件发送和接收协议等。Session对象根据这些信息构建用于邮件收发的Transport和Store对象,以及为客户端创建Message对象时提供信息支持。 

4邮件组织结构相关的API

MimeMessage类表示整封邮件。

MimeBodyPart类表示邮件的一个MIME消息。

MimeMultipart类表示一个由多个MIME消息组合成的组合MIME消息。

5具体的例子程序

package cnedudlmusend;

import javautilProperties;

import javaxactivationDataHandler;

import javaxactivationFileDataSource;

import javaxmailMessage;

import javaxmailSession;

import javaxmailTransport;

import javaxmailinternetInternetAddress;

import javaxmailinternetMimeBodyPart;

import javaxmailinternetMimeMessage;

import javaxmailinternetMimeMultipart;

import javaxmailinternetMimeUtility;

public class SendMail {

public static void main(String[] args) throws Exception {

Properties prop = new Properties();

//连接的邮件服务器的主机名

propsetProperty("mailsmtphost", "smtpsinacomcn");

//发送邮件的协议

propsetProperty("mailtransportprotocol", "smtp");

//是否向邮件服务器提交认证

propsetProperty("mailsmtpauth", "true");

//创建session

Session session = SessiongetInstance(prop);

sessionsetDebug(true);

//得到transport

Transport ts = sessiongetTransport();

//连接邮件服务器

tsconnect("smtpsinacomcn", "xxxx@sinacom", "xxxxx");

//发送邮件

MimeMessage message = createMessage(session);

tssendMessage(message, messagegetAllRecipients());

tsclose();

}

public static MimeMessage createMessage(Session session) throws Exception {

MimeMessage message = new MimeMessage(session);

//设置邮件的基本信息

messagesetFrom(new InternetAddress("xxxx@sinacom"));

messagesetRecipient(MessageRecipientTypeTO, new InternetAddress("1219070362@qqcom"));

messagesetSubject("test");

//正文

MimeBodyPart text = new MimeBodyPart();

//设置charaset可以解决中文正文的乱码问题,内嵌可下载的

textsetContent("你好xxx,<img src='c:/dogjpg' />测试成功!<br/><img src='cid:aaajpg' />", "text/html;charset=gbk");

//1

MimeBodyPart image = new MimeBodyPart();

imagesetDataHandler(new DataHandler(new FileDataSource("src/88jpg")));

imagesetContentID("aaajpg");

//附件

MimeBodyPart attach = new MimeBodyPart();

DataHandler dh = new DataHandler(new FileDataSource("src/javamail架包jar"));

attachsetDataHandler(dh);

//解决文件中文乱码问题

attachsetFileName(MimeUtilityencodeText(dhgetName()));

//描述正文和的关系

MimeMultipart mp = new MimeMultipart();

mpaddBodyPart(text);

mpaddBodyPart(image);

mpsetSubType("related");

//描述正文和附件

MimeMultipart mp2 = new MimeMultipart();

mp2addBodyPart(attach);

//将正文封装为一个body

MimeBodyPart content = new MimeBodyPart();

contentsetContent(mp);

mp2addBodyPart(content);

mp2setSubType("mixed");

messagesetContent(mp2);

messagesaveChanges();

return message;

}

}

javaxmailMessagingException: Can't send command to SMTP host;

上述异常的出现是因为发送邮件的服务器连接不上,

你确定你sina 邮箱开通了smtp 服务。

我记得新浪邮箱是要自己手工开通

这个错误是连不上邮件服务器的25端口。

1,检查邮件服务器是否正常,检查IP和端口是否写对。

2,检查你的主机到邮件服务器网络是否正常,可以用PING 或 TELNET IP PORT来测试。

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » javamail如何处理退信

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情