基于JavaMail的Java邮件发送
Author xiuhong.chen@hand-china.com
Desc 简单邮件发送
Date 2017/12/8
项目中需要根据物料资质的状况实时给用户发送邮件,然后我就简单学习了SMTP.
电子邮件的在网络中传输和网页一样需要遵从特定的协议,常用的电子邮件协议包括 SMTP,POP3,IMAP。其中邮件的创建和发送只需要用到 SMTP协议,所以本文也只会涉及到SMTP协议。SMTP 是 Simple Mail Transfer Protocol 的简称,即简单邮件传输协议。
1.导入jar包javax.mail.jar
JavaMail 下载地址: https://github.com/javaee/javamail/releases
特别注意:
- 本测试用例用的 JavaMail 版本是 1.6.0,如果下载到其他版本的 JavaMail 运行时出现问题,请使用 JavaMail 1.6.0 版本再进行尝试。
- 使用 JavaMail 1.6.0 要求的 JDK 版本必须是 JDK 1.7 以上(建议使用最新版 JDK)。
- 不要直接就完完全全复制我的代码,需要 修改一下发送的标题、内容、用户昵称,要不然所有人都直接复制我的代码发送,内容一致,邮箱服务器就可能会检测到这些内容是垃圾广告内容,不让你发送,会返回错误码,查询错误码也能查询到失败原因。
2.创建一封简单的电子邮件
首先创建一个 Java 工程,把下载好的 javax.mail.jar 作为类库加入工程
邮件创建步骤:
- 配置连接邮件服务器的参数( 邮件服务器SMTP, 是否需要SMTP验证 )
- 创建一个邮件对象( MimeMessage )
- 设置发件人,收件人 ( 可增加多个收件人,抄送人,密送人 )
- 设置邮件标题, 正文 , 附件等
- 设置显示的发送时间
public void sendMail() throws Exception{
System.out.println("sendMailServlet-----start");
//1.创建邮件对象
Properties properties = new Properties();
properties.put("mail.smtp.host", "mail.hand-china.com"); // 指定SMTP服务器
properties.put("mail.smtp.auth", "true"); // 指定是否需要SMTP验证
Session session = Session.getInstance(properties);
MimeMessage mimeMessage =new MimeMessage(session);
/*2.设置发件人
* 其中 InternetAddress 的三个参数分别为: 邮箱, 显示的昵称(只用于显示, 没有特别的要求), 昵称的字符集编码