场景1:
你是一个大学部门的部员,你的部长给你一个任务:向所有通过面试的成员发送一个邮件,除了姓名和联系方式,内容都是一致的。
场景2:
你是一家企业的员工,你的老板让你给你们单位的所有员工发送一个邮件,内容是有关工资的情况,邮件上除了姓名和工资外,其余内容都是一致的。
不得不说,类似上面的场景非常常见!这个时候如果我们使用手动方式去发送,这也太Oh,You Tired(OUT)了吧!!是否可以用代码帮我们发送?答案是肯定的,现在就让JK来教大家如何使用Java向多群体发送多邮件!
因为我本人是习惯使用网易邮箱的,那么这里就以网易邮箱为例,其他邮箱大同小异。
首先,打开网页版的网易邮箱并登陆自己的邮箱。
打开设置->POP3/SMTP/IMAP
开通POP3/SMTP服务,这里开启的时候会有一个小小的手机短信验证,相信这个对你来说就很简单的啦~
【重要!!!】确认开启并验证成功后该页面会生成一个授权码,该授权码要自己先保存着,后面要写到代码里面。
新建一个Maven项目,项目很简单,只有一个发送邮件的Java类和一个pom.xml文件。我们主要是通过这个SendEmail类的sendMail方法执行发送邮件的操作,该方法传入邮箱地址、邮箱内容等参数。
在pom.xml中添加依赖。
<dependency>
<groupId>com.sun.mailgroupId>
<artifactId>javax.mailartifactId>
<version>1.6.2version>
dependency>
创建一个Properties对象设置邮箱服务器配置信息。
Properties props = new Properties();
创建一个Session对象。
Session session = Session.getDefaultInstance(props);
创建MimeMessage对象存储发送邮件过程中的信息。
MimeMessage message = new MimeMessage(session);
你并没有看错,除了导包语句和注释,这个程序只有30行代码左右。这里的代码是针对一个邮箱发送一份邮件,但我想聪明的你应该知道如何去发挥吧~~
import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import java.util.Properties;
/**
* @ClassName SendEmail
* @Description TODO
* @Author jiaqi
* @Date 2021/6/4 0:22
* @Version 1.0
**/
public class SendEmail {
public static void main(String[] args) {
// 自定义发件人的邮箱(此案例必须为网易邮箱)
String from = "发件人邮箱地址";
// 发件人称号,与发件人邮箱相同
String user = "发件人邮箱地址";
// 发件人邮箱客户端的授权码
String password = "授权码";
// 自定义收件人的邮箱
String to = "收件人邮箱地址";
// 发送邮箱标题
String title = "我是标题哦!";
// 发送邮箱文本
String text = "你好,这里是邮件的内容";
boolean bool = sendMail(from,user,password,to,title,text);
System.out.println(bool);
}
/*
* @Author Jiaqi
* @Description //TODO
* @Date 0:46 2021/6/4
* @Param [from, user, password, to, text, title]
* @return boolean
**/
public static boolean sendMail(String from ,String user,String password, String to, String title,String text) {
//开启配置
Properties props = new Properties();
// 设置服务器属性,这里是使用网易的smtp服务器
props.setProperty("mail.smtp.host", "smtp.163.com");
// 校验用户名和密码
props.put("mail.smtp.host", "smtp.163.com");
props.put("mail.smtp.auth", "true");
// 使用刚刚定义个配置对象创建一个session对象
Session session = Session.getDefaultInstance(props);
// 在控制台显示显示发送过程信息
session.setDebug(true);
// 创建message对象存储信息
MimeMessage message = new MimeMessage(session);
try {
//存储发件人邮箱
message.setFrom(new InternetAddress(from));
// 存储收件人邮箱
message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));
// 存储标题
message.setSubject(title);
// 内容(包括文本和附件)
Multipart multipart = new MimeMultipart();
// 文本
BodyPart contentPart = new MimeBodyPart();
//设置文本内容和编码
contentPart.setContent(text, "text/html;charset=utf-8");
//像内容中添加文本信息
multipart.addBodyPart(contentPart);
//存储文本
message.setContent(multipart);
// 保存
message.saveChanges();
// 连接服务器的邮箱
Transport transport = session.getTransport("smtp");
transport.connect("smtp.163.com", user, password);
// 发送邮件
transport.sendMessage(message, message.getAllRecipients());
// 关闭资源
transport.close();
} catch (MessagingException e) {
e.printStackTrace();
return false;
}
return true;
}
}
提供改进思路:
使用邮箱向批量用户发送邮件,这是一个非常常见的业务。我们的邮箱中充斥着各大平台的“群发消息”,这也可以说明这个小小的功能有多大的用处。好啦,这一次分享就到这里啦,感谢您看了这么久。现在是凌晨1.56分,原创不易。如果觉得这篇文章对你有帮助的话,欢迎大家点赞评论收藏,这也是对我最大的鼓励啦!