转载: 利用java实现发送邮件
转载: Spring Boot实现邮件发送
导包
如果是mvn项目的话,我们只需要添加依赖即可
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.5.0-b01</version>
</dependency>
普通:创建一封简单的电子邮件
邮件创建步骤:
- 创建一个邮件对象(MimeMessage);
- 设置发件人,收件人,可选增加多个收件人,抄送人,密送人;
- 设置邮件的主题(标题);
- 设置邮件的正文(内容);
- 设置显示的发送时间;
- 保存到本地。
代码如下:
public class TestMail {
public static void main(String[] args) throws Exception {
// 1. 创建一封邮件
Properties props = new Properties(); // 用于连接邮件服务器的参数配置(发送邮件时才需要用到)
Session session= Session.getInstance(props); // 根据参数配置,创建会话对象(为了发送邮件准备的)
MimeMessage message = new MimeMessage(session); // 创建邮件对象
/*
* 也可以根据已有的eml邮件文件创建 MimeMessage 对象
* MimeMessage message = new MimeMessage(session, new FileInputStream("myEmail.eml"));
*/
// 2. From: 发件人
// 其中 InternetAddress 的三个参数分别为: 邮箱, 显示的昵称(只用于显示, 没有特别的要求), 昵称的字符集编码
// 真正要发送时, 邮箱必须是真实有效的邮箱。
message.setFrom(new InternetAddress("email@send.com", "USER_AA", "UTF-8"));
// 3. To: 收件人
message.setRecipient(MimeMessage.RecipientType.TO, new InternetAddress("cc@receive.com", "USER_CC", "UTF-8"));
// To: 增加收件人(可选)
message.addRecipient(MimeMessage.RecipientType.TO, new InternetAddress("dd@receive.com", "USER_DD", "UTF-8"));
// Cc: 抄送(可选)
message.setRecipient(MimeMessage.RecipientType.CC, new InternetAddress("ee@receive.com", "USER_EE", "UTF-8"));
// Bcc: 密送(可选)
message.setRecipient(MimeMessage.RecipientType.BCC, new InternetAddress("ff@receive.com", "USER_FF", "UTF-8"));
// 4. Subject: 邮件主题
message.setSubject("邮件主题", "UTF-8");
// 5. Content: 邮件正文(可以使用html标签)
message.setContent("这是邮件正文", "text/html;charset=UTF-8");
// 6. 设置显示的发件时间
message.setSentDate(new Date());
// 7. 保存前面的设置
message.saveChanges();
// 8. 将该邮件保存到本地
OutputStream out = new FileOutputStream("myEmail.eml");
message.writeTo(out);
out.flush();
out.close();
}
}
springboot方式
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
基本配置
配置邮箱基本信息
项目创建成功后,接下来在 application.properties 中配置邮箱的基本信息:
spring.mail.host=smtp.163.com
spring.mail.port=25
spring.mail.username=13XXXXXXX12@163.com
spring.mail.password=123456yjn
spring.mail.default-encoding=UTF-8
spring.mail.properties.mail.smtp.socketFactoryClass=javax.net.ssl.SSLSocketFactory
spring.mail.properties.mail.debug=true
配置含义分别如下:
配置 SMTP 服务器地址
SMTP 服务器的端口 163邮箱不用SSL默认25端口,用SSL可用465/994端口(QQ等大厂用ssl)
配置邮箱用户名
配置密码,注意,不是真正的密码,而是刚刚申请到的授权码(是一个类似激活码的东西)
默认的邮件编码
配饰 SSL 加密工厂(qq邮箱等大厂需要)
表示开启 DEBUG 模式,这样,邮件发送过程的日志会在控制台打印出来,方便排查错误(有信息)
代码:
@RunWith(SpringRunner.class)
@SpringBootTest
public class MailApplicationTests {
@Autowired
JavaMailSender javaMailSender;
@Test
public void contextLoads() {
SimpleMailMessage message = new SimpleMailMessage();
message.setSubject("这是一封测试邮件");
message.setFrom("13XXXXXXX12@163.com");
message.setTo("95XXXXX50@qq.com");
message.setCc("37xxxxx37@qq.com");
message.setBcc("14xxxxx098@qq.com");
message.setSentDate(new Date());
message.setText("这是测试邮件的正文");
javaMailSender.send(message);
}
}
从上往下,代码含义分别如下:
构建一个邮件对象
设置邮件主题
设置邮件发送者
设置邮件接收者,可以有多个接收者
设置邮件抄送人,可以有多个抄送人
设置隐秘抄送人,可以有多个
设置邮件发送日期
设置邮件的正文
发送邮件
最后执行该方法,就可以实现邮件的发送