它所需要的依赖是:
javax.mail
mail
1.4.7
一、发送邮件
//创建连接对象 连接到邮件服务器
Properties properties = new Properties();
//设置发送邮件的基本参数
//发送邮件服务器
properties.put(“mail.smtp.host”, ma.getMailhost());
//发送端口
properties.put(“mail.smtp.port”, ma.getMailport());
//验证
properties.put(“mail.smtp.auth”, “true”);
// javax.MailVo.Session保存邮件系统的配置属性和提供用户验证的信息,发送email首先要获取session对象
// Session.getInstance(java.util.Properties)获取非共享的session对象
// Session.getDefaultInstance(java.utilProperties)获取共享的session对象
//设置发送邮件的账号和密码
Session session = Session.getInstance(properties, new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {//邮箱+授权码(密码)
return new PasswordAuthentication(ma.mailname, ma.mailpassword);
}
});
//创建邮件对象
Message message = new MimeMessage(session);
//设置发件人
message.setFrom(new InternetAddress(ma.mailname));
//设置收件人
message.setRecipient(Message.RecipientType.TO, new InternetAddress(ma.getMailusername()));
//设置主题
message.setSubject(ma.getSub());
//设置邮件正文 第二个参数是邮件发送的类型
message.setContent(ma.getCon(), “text/html;charset=UTF-8”);
//发送一封邮件
Transport.send(message);
二、发送多封邮件
// 设置属性
Properties props = new Properties();
props.setProperty(“mail.smtp.auth”, “true”);
props.setProperty(“mail.transport.protocol”, “smtp”);
// 用SMTP协议发送Email时通常要设置mail.smtp.host(MailVo.protocol.host协议特定邮件服务器名)属性
props.put(“mail.smtp.host”, m.getMailhost());// smtp服务器地址
// javax.MailVo.Session保存邮件系统的配置属性和提供用户验证的信息,发送email首先要获取session对象
// Session.getInstance(java.util.Properties)获取非共享的session对象
// Session.getDefaultInstance(java.utilProperties)获取共享的session对象
Session session = Session.getInstance(props);
session.setDebug(true);
// 配置邮件会话之后,要编写消息
// 要编写消息就要生成javax.MailVo.Message子类的实例
// 或对Internet邮件使用javax.MailVo.interet.MimeMessage类
Message msg = new MimeMessage(session);
// 消息发送者、日期、主题
msg.setSubject(m.getSub());
msg.setText(m.getCon());
msg.setSentDate(new Date());
// 设置消息的接受者与发送者
msg.setFrom(new InternetAddress(m.getMailname()));//发件人邮箱
//单个接收对象
msg.setRecipient(Message.RecipientType.TO,
new InternetAddress(m.getMailusername())); //收件人邮箱
//多个接收对象
List list = new ArrayList();
list.add(new InternetAddress(“2425805662@qq.com”));
list.add(new InternetAddress(“2425714626@qq.com”));
InternetAddress[] address =(InternetAddress[])list.toArray(new InternetAddress[list.size()]);
//msg.setRecipient(Message.RecipientType.TO,address); //收件人邮箱
msg.saveChanges();
// 发送Email,这里以文本消息为例 javax.MailVo.Transport类来发送消息。
// 这时Transport对象与相应传输协议通信,这里是SMTP协议
Transport transport = session.getTransport();
// 登录邮箱 。配置发件人邮箱,密码或授权码
transport.connect(m.mailname,m.getMailpassword());
//发送邮件
transport.sendMessage(msg, msg.getAllRecipients());
transport.close();
三、封装邮件发送
cn.hutool hutool-extra 5.6.0添加配置文件mail.Setting 如果不想配置可以选择下方的第四种方式,直接实例
#邮件服务器的SMTP地址,可选,默认为smtp.<发件人邮箱后缀>
host = smtp.qq.com
邮件服务器的SMTP端口,可选,默认25
port = 25
发件人(必须正确,否则发送失败)
from = 2728832278@qq.com
用户名,默认为发件人邮箱前缀
在Hutool中user属性默认提取你邮箱@前面的部分,但是foxmail邮箱是无效的,需要单独配置为与之绑定的qq号码或者XXXX@qq.com的XXXX。
user = 2728832278
密码(注意,某些邮箱需要为SMTP服务单独设置授权码,详情查看相关帮助)
pass = iwgwcryaextkdhfe
注意 邮件服务器必须支持并打开SMTP协议
public void mail() {
/**
* 1 带附件的邮件
/
//MailUtil.send(“2425805662@qq.com”, “测试”, “
邮件来自Hutool测试
”, true, FileUtil.file(“C:/Users/LIZHAOHAI/Pictures/微信图片_20200726205844.png”));/*
* 2 单个对象发送邮件
* 参数:1、tos: 对方的邮箱地址,可以是单个,也可以是多个(Collection表示)
* 2、subject:标题
* 3、content:邮件正文,可以是文本,也可以是HTML内容
* 4、IsHtml: 是否为HTML,如果是,那参数3识别为HTML内容
* 5、files: 可选:附件,可以为多个或没有,将File对象加在最后一个可变参数中即可
*/
//MailUtil.send(“2425805662@qq.com”, “测试”, “邮件来自Hutool测试”, false);
/* i
* 3 多个对象发送邮件
/
ArrayList tos = CollUtil.newArrayList(
“2425805662@qq.com”,
“2425714626@qq.com”,
“2806857418@qq.com”);
MailUtil.send(tos, “测试”, “邮件来自Hutool群发测试”, false, FileUtil.file(“F:/图片吖/bug/1 (7).PNG”));
/
* 4 不用配置文件
*/
MailAccount account = new MailAccount();
account.setHost(“smtp.qq.com”);//服务器
account.setPort(25);//端口
account.setAuth(true);//验证&&认证
account.setFrom(“2728832278@qq.com”);//邮箱号
account.setUser(“2728832278”);//用户名
account.setPass(“iwgwcryaextkdhfe”);//授权码
//MailUtil.send(account, CollUtil.newArrayList(“2425805662@qq.com”), “测试”, “邮件来自Hutool测试”, false);
}