Java实现邮件发送功能
一、开发环境
maven+springboot
二、添加所需依赖包
pom.xml添加以下配置
<!-- 邮件 -->
<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-email -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-email</artifactId>
<version>1.5</version>
</dependency>
三、邮件发送工具类Mailer
import org.apache.commons.mail.EmailException;
import org.apache.commons.mail.HtmlEmail;
public class Mailer {
// 发件人邮箱的 SMTP 服务器地址, 必须准确, 不同邮件服务器地址不同, 一般(只是一般, 绝非绝对)格式为: smtp.xxx.com
private static String mailserver = "smtp.163.com"; // 网易163邮箱的 SMTP 服务器地址为: smtp.163.com
private static String sender = "xxxxx@163.com"; // 发件人
private static int smtpPort = 25;
// smtp服务器的认证资料
private static String username = "xxxxx@163.com"; // 发件人邮箱账号
private static String password = "******"; // 发件人邮箱密码
//是否初始化
private static boolean isInited = false;
private static boolean isUse = true;
public static int sendMail(EmailInfo info) {
if (!isInited) {
isInited = true;
}
if (!isUse) {
System.err.println("邮箱设置不启用");
return 1;
}
HtmlEmail email = new HtmlEmail();
// 通过Gmail Server 发送邮件
email.setHostName(mailserver);
email.setSmtpPort(smtpPort);
//设定smtp服务器的认证资料信息
email.setAuthentication(username, password);
email.setStartTLSEnabled(false);
email.setSSLOnConnect(false);
try {
email.setFrom(sender); // 设定发件人
email.addTo(info.getReceivers().toArray(new String[info.getReceivers().size()])); // 设定收件人
email.setCharset("UTF-8"); // 设定内容的语言集
email.setDebug(true);
email.setSubject(info.getTitle()); // 设定主题
email.setHtmlMsg(info.getContent()); // 设定邮件内容
email.send();// 发送邮件
} catch (EmailException e) {
e.printStackTrace();
return 1;
}
return 0;
}
// public static void main(String[] args) {
// EmailInfo info = new EmailInfo();
// info.setTitle("邮件主题");
// info.setContent("邮件内容");
// info.getReceivers().add("xxxxx@qq.com");
// Mailer.sendMail(info);
// }
}
四、邮件参数类EmailInfo
import lombok.Data;
import java.util.ArrayList;
import java.util.List;
/**
* <p>ClassName: EmailInfo</p >
* <p>Description: 邮件参数</p >
* <p>Author: spring.zhang</p >
* <p>Date: 2019-08-08</p >
*/
@Data
public class EmailInfo {
/**
* 邮件标题
*/
private String title;
/**
* 邮件内容
*/
private String content;
/**
* 收件人
*/
private List<String> receivers = new ArrayList<String>();
}
五、业务节点邮件发送
// 邮件通知
EmailInfo emailInfo = new EmailInfo();
emailInfo.setTitle("邮件标题");
emailInfo.setContent("尊敬的用户您好!\r\n <br />"+"邮件内容");
emailInfo.getReceivers().add("aaa@qq.com");
emailInfo.getReceivers().add("bbb@163.com");
Mailer.sendMail(emailInfo);
白话
将邮件工具类和邮件参数工具类直接copy到项目随意目录,可直接运行邮件工具类的main函数测试,在业务某个节点要发送邮件,则直接将参考《五、业务节点邮件发送》代码