邮件发送的大致过程
- 1、构建一个继承自javax.mail. Authenticator的具体类,并重写里面的getPasswordAuthentication()方法。此类是用作登录校验的,以确保你对该邮箱有发送邮件的权利。
- 2、构建一个properties文件,该文件中存放SMTP服务器地址等参数。
- 3、通过构建的properties文件和javax.mail. Authenticator具体类来创建一个javax.mail. Session。Session的创建,就相当于登录邮箱一样。剩下的自然就是新建邮件。
- 4、构建邮件内容,一般是javax.mail.internet. MimeMessage对象,并指定发送人,收信人,主题,内容等等。
- 5、使用javax.mail. Transport工具类发送邮
需要maven的依赖
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4.5</version>
</dependency>
private static void send(String mailServer, final String loginAccount, final String loginAuthCode, String sender,
String[] recipients, String emailSubject, String emailContent, String emailContentType) {
try {
//跟smtp服务器建立一个连接
Properties p = new Properties();
//设置邮件服务器主机名
p.setProperty("mail.host", mailServer);
//发送服务器需要身份验证,要采用指定用户名密码的方式去认证
p.setProperty("mail.smtp.auth", "true");
//发送邮件协议名称
p.setProperty("mail.transport.protocol", "smtp");
//开启SSL加密,否则会失败
MailSSLSocketFactory ssl = new MailSSLSocketFactory();
ssl.setTrustAllHosts(true);
p.put("mail.smtp.ssl.enable", "true");
p.put("mail.smtp.ssl.socketFactory", ssl);
// 创建session
Session session = Session.getDefaultInstance(p, new Authenticator() {
protected javax.mail.PasswordAuthentication getPasswordAuthentication() {
//loginAccount:邮箱账号 loginAuthCOde:邮箱授权码
javax.mail.PasswordAuthentication pa = new PasswordAuthentication(loginAccount, loginAuthCode);
return pa;
}
});
//设置打开调试状态
session.setDebug(true);
//可以发送几封邮件:可以在这里 for循环多次
//声明一个Message对象(代表一封邮件),从session中创建
MimeMessage msg = new MimeMessage(session);
//邮件信息封装
//发件人
msg.setFrom(new InternetAddress(sender));
//收件人:可以多个
//一个的收件人
InternetAddress[] receptientsEmail = new InternetAddress[recipients.length];
for (int i = 0; i < recipients.length; i++) {
receptientsEmail[i] = new InternetAddress(recipients[i]);
}
//多个收件人
msg.setRecipients(RecipientType.TO, receptientsEmail);
//邮件的主题
msg.setSubject(emailSubject);
//邮件的内容
msg.setContent(emailContent, emailContentType);//发html格式的文本
//发送动作
Transport.send(msg);
} catch (Exception e) {
log.debug("邮件发送失败");
}
log.debug("邮件发送成功");
}