java开发之邮件发送

本文介绍了邮件发送的功能

发邮件过程:

  • SpringBoot通过properties配置文件中配置邮箱的发送的信息,可以在spring容器中生成一个JavaMailSenderImpl bean
  • JavaMailSenderImpl可以设置其他属性信息,如超时时间等等
  • 通过JavaMailSenderImpl创建MimeMessage对象
  • 通过MimeMessage创建MimeMessageHelper对象
  • MimeMessageHelper中设置接收方邮箱地址邮箱主题以及邮箱内容
  • 最后通过JavaMailSenderImpl将邮件发送出去

一.pom中添加spring-boot-starter-mail依赖

依赖如下:

1
2
3
4
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>

二.在properties文件中添加邮件发送方信息

1
2
3
4
5
6
7
8
9
10
11
12
#163邮箱smtp服务
spring.mail.host=smtp.163.com
#端口号
spring.mail.port=25
#邮箱账号
spring.mail.username=xxx@163.com
#密码
spring.mail.password=KRSCKANTLSFJJAYQ
#是否授权,true表示用户名密码必填
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true
spring.mail.properties.mail.smtp.starttls.required=true

注意:spring.mail.host使用其他邮箱需要查找对应的smtp服务,spring.mail.password登陆163邮箱,获取授权密码,是一个加密的串.

如图:
smtp.png

三.编写测试类

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
@RunWith(SpringRunner.class)
@SpringBootTest
public class MailTest {
@Autowired
public JavaMailSenderImpl javaMailSender;
@Test
public void main() throws MessagingException {
String emailArr[] = {"123456@qq.com", "654321@qq.com"};
sendMail(emailArr, "测试邮件","邮件内容!!!");
System.out.println("发送邮件成功");
}
/**
* 发送多个邮件
* @param toEmails 接收方邮件地址
* @param subject 邮件主题
* @param content 邮件内容
* @throws MessagingException
*/
private void sendMail(String[] toEmails, String subject, String content) throws MessagingException {
MimeMultipart msgMultipart = new MimeMultipart("mixed");
MimeBodyPart textPart = new MimeBodyPart();
// 邮件内容
textPart.setContent(content, "text/html;charset=utf-8");
msgMultipart.addBodyPart(textPart);
Properties prop = new Properties();
// 设置发送超时时间
prop.put("mail.smtp.timeout", "3000");
prop.put("mail.smtp.connectiontimeout", "3000");
javaMailSender.setJavaMailProperties(prop);
for (int i = 0; i < toEmails.length; i++) {
MimeMessage mimeMessage = javaMailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);
helper.setFrom("cherish_joy@163.com");
// 接收方邮件地址
helper.setTo(toEmails[i]);
// 邮件主题
helper.setSubject(subject);
mimeMessage.setContent(msgMultipart);
javaMailSender.send(mimeMessage);
}
}
}

注意:邮件发送的内容可以填写一个html文本的字符串.

四.邮件发送结果

邮件发送结果.png