零碎1-利用代理发邮件Java功能
编程语言
2018-05-12 02:20:55
阅读次数: 0
- 1. 需求
- 用Java完成发邮件的小程序,可用代理,可添加附件
- 2.实现关键部分
- jar包:javax.mail.jar(主要包,发送邮件相关),activation-1.1.1.jar(主要用来处理附件)
- 代码太多,这里就讲下思路:
-
- 1)设置session等完成邮件基础设置(代码片段):
-
this.auth = new MailAuthenticator(username,password);
Session session = Session.getDefaultInstance(pros,auth);
session.setDebug(true); //设置获取 debug 信息
mimeMessage = new MimeMessage(session);
然后包装MimeMessage,即设置邮件内容(代码片段):
-
mimeMessage.setSubject(sub);
mimeMessage.setText(text);
mimeMessage.setRecipient(Message.RecipientType.TO, new InternetAddress(to));
mimeMessage.setSentDate(new Date());
mimeMessage.setFrom(new InternetAddress(username,username));
- 然后利用Transport发送MimeMessage;
-
Transport.send(mimeMessage);
这样就完成基本的流程。
- 2)在邮件发送前的任何地方,添加如下代码:
-
System.setProperty("socksProxyHost", 代理IP);
System.setProperty("socksProxyPort",代理接口);
- 实现调用代理。
- 3)包装multipart,设置附件信息,
-
if(multipart==null){
multipart = new MimeMultipart();
}
multipart.addBodyPart(writeFiles(file));
mimeMessage.setContent(multipart);
实现添加附件功能。
- 注:在自己写的程序中发送邮件,相当于利用第三方操作自己的邮箱,这个时候有些邮箱就要求做用户密码和SSL验证,我测试用的QQ邮箱就需要,实现这个的关键,要先新建一个用户密码验证类MailAuthenticator,实现验证关键代码如下:
this.auth = new MailAuthenticator(username,password);
Session session = Session.getDefaultInstance(pros,auth);
- 代码中pros,是个Properties对象,包含了SSL验证等相关信息,如下:
- 3.完成
-
- 程序最终实现见http://code.taobao.org/p/MailSender828/src/trunk/SendMail/
- 配置信息都单独放在properties文件中,方便打包后再次修改,其中:
- config.properties是存放发送邮件服务器、SSL验证信息、代理等信息的文件;
- mail.properties是存放具体邮件内容,例如收发件人邮箱地址、标题等内容的文件;
- attachments.txt是存放附件附件实际路径的文档,一个文件路径一行,文档可以为空。
转载自sophia828.iteye.com/blog/2342151