1. 登录/注册网易邮箱
2. 进入邮箱,找到导航栏设置
2.1 选择 POPS/SMTP/IMAP
2.2 开启服务(
IMAP/SMTP服务 和 POP3/SMTP服务)
3. 代码部分
3.1 引入依赖
<!--网易邮件-->
<dependency>
<groupId>javax.mail</groupId>
<artifactId>javax.mail-api</artifactId>
<version>1.6.2</version>
</dependency>
<dependency>
<groupId>com.sun.mail</groupId>
<artifactId>jakarta.mail</artifactId>
<version>1.6.5</version>
</dependency>
3.2 邮箱配置类
public class MailConst {
//发送邮件的邮箱-- 替换成你的邮箱
public static final String USER_NAME = "xing****8**8@yeah.net";
//授权密码 -- 替换成你的 PWD_CODE
public static final String PWD_CODE = "DHZGHGYUS******";
// 替换一下 smtp.yeah.net / smtp.163.com 跟你的发送邮件相关
public static final String MAIL_HOST = "smtp.yeah.net";
public static final String MAIL_SMTP_AUTH = "true";
}
3.3 邮箱工具类
public class MailUtils {
//建立服务器的邮件连接,从而可以进行发送邮件
public static Session getMailSession(){
//0.1 确定连接位置
Properties properties = new Properties();
//获取163邮箱smtp服务器的地址,
properties.setProperty("mail.host", MailConst.MAIL_HOST);
//是否进行权限验证。
properties.setProperty("mail.smtp.auth", MailConst.MAIL_SMTP_AUTH);
//0.2确定权限(账号和密码)
Authenticator authenticator = new Authenticator() {
@Override
public PasswordAuthentication getPasswordAuthentication() {
//填写自己的163邮箱的登录帐号和授权密码(不是登录密码)。
return new PasswordAuthentication(MailConst.USER_NAME,MailConst.PWD_CODE);
}
};
//1 获得连接
/**
* properties:包含配置信息的对象,Properties类型
* 配置邮箱服务器地址、配置是否进行权限验证(帐号密码验证)等
*
* authenticator:确定权限(帐号和密码)
*
* 所以就要在上面构建这两个对象。
*/
Session session = Session.getDefaultInstance(properties, authenticator);
return session;
}
/**
* 指定一个人发送邮件,单个发送
* @Param toEmailAddress 单个接受邮件的邮箱地址
* @Param title 主题
* @Param content 内容
**/
public static void sendMailTOSingleUser(String toEmailAddress,String title, String content){
//获得邮箱服务器的连接
Session session = getMailSession();
//2 创建消息
Message message = new MimeMessage(session);
// 2.1 发件人 我们自己的邮箱地址,就是名称
try {
message.setFrom(new InternetAddress(MailConst.USER_NAME));
/**
* 2.2 收件人
* 第一个参数:
* RecipientType.TO 代表收件人
* RecipientType.CC 抄送
* RecipientType.BCC 暗送
* 比如A要给B发邮件,但是A觉得有必要给要让C也看看其内容,就在给B发邮件时,
* 将邮件内容抄送给C,那么C也能看到其内容了,但是B也能知道A给C抄送过该封邮件
* 而如果是暗送(密送)给C的话,那么B就不知道A给C发送过该封邮件。
* 第二个参数
* 收件人的地址,或者是一个Address[],用来装抄送或者暗送人的名单。或者用来群发。可以是相同邮箱服务器的,也可以是不同的
* 这里我们发送给我们的qq邮箱
*/
message.setRecipient(MimeMessage.RecipientType.TO, new InternetAddress(toEmailAddress));
//设置抄送人,这里设置自己的是抄送人,免得被网易邮箱列为垃圾邮件
message.setRecipient(Message.RecipientType.CC, new InternetAddress( MailConst.USER_NAME ));
// 2.3 主题(标题)
message.setSubject(title);
//设置编码,防止发送的内容中文乱码。
message.setContent(content, "text/html;charset=UTF-8");
//3发送消息
Transport.send(message);
} catch (MessagingException e) {
e.printStackTrace();
}
}
/**
* 群发邮件,也可以只发一个人。可设置主题和邮件内容,无附件
* @Param toEmailAddressArray 接受邮件的所有邮箱地址
* @Param title 主题
* @Param content 内容
**/
public static void sendMailToUserArray(ArrayList<String> toEmailAddressArrayList , String title, String content) {
String[] toEmailAddressArray = (String[]) toEmailAddressArrayList.toArray(new String[0]);
//获得邮箱服务器的连接
Session session = getMailSession();
//2 创建消息
Message message = new MimeMessage(session);
// 2.1 发件人 我们自己的邮箱地址,就是名称
try {
message.setFrom(new InternetAddress(MailConst.USER_NAME));
if (toEmailAddressArray != null) {
// 为每个邮件接收者创建一个地址
Address[] toEmailRecipients = null;
toEmailRecipients = new InternetAddress[toEmailAddressArray.length];
for (int i = 0; i < toEmailAddressArray.length; i++) {
toEmailRecipients[i] = new InternetAddress(toEmailAddressArray[i]);
}
message.setRecipients(MimeMessage.RecipientType.TO, toEmailRecipients);
}
//设置抄送人,这里设置自己的是抄送人,免得被网易邮箱列为垃圾邮件
message.setRecipient(Message.RecipientType.CC, new InternetAddress( MailConst.USER_NAME ));
// 2.3 主题(标题)
message.setSubject(title);
//设置编码,防止发送的内容中文乱码。
message.setContent(content, "text/html;charset=UTF-8");
//3发送消息
Transport.send(message);
} catch (MessagingException ex) {
ex.printStackTrace();
}
}
}
3.4 发送邮件测试类(批量发送)
@Test
public void emailTest(){
String mobile = "1373****600";
String vin = "ABCDEFG";
//发送邮件
ArrayList<String> emailArray = new ArrayList<>();
emailArray.add("2055****7@qq.com"); // 替换一下
emailArray.add("xingf****88@yeah.net"); //替换一下
MailUtils.sendMailToUserArray(emailArray,"查询出错","vin码:"+vin+"查询失败"+"联系电话:"+mobile);
}