SpringBoot使用SMTP协议邮件发送。
协议分类
SMTP协议
SMTP的全称是“Simple Mail Transfer Protocol”,即”简单邮件传输协议”。它是一组用于从源地址到目的地址传输邮件的规范,通过它来控制邮件的中转方式
POP协议
POP全称是 Post Office Protocol,邮局协议。它定义了邮件客户端软件和POP3邮件服务器的通信规则
IMAP
IMAP全称是 Internet Message Access Protocol,Internet消息访问协议,它是对POP3协议的一种扩展,也是定义了邮件客户端软件和IMAP邮件服务器的通信规则
依赖
1 2 3 4
| <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId> </dependency>
|
配置文件
1 2 3 4 5 6 7 8 9 10 11
| spring.mail.host=smtp.qq.com spring.mail.port=25 spring.mail.username=xxxqq.com spring.mail.from=xxx@qq.com spring.mail.password=xxxx //授权密码 spring.mail.default-encoding=UTF-8 spring.mail.protocol=smtp 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.properties.mail.smtp.socketFactory.class=javax.net.ssl.SSLSocketFactory
|
测试
全局变量
1 2 3 4 5 6
| @Resource private JavaMailSender mailSender;
@Value("${spring.mail.username}") private String nick;
|
简单邮件
1 2 3 4 5 6 7 8 9 10 11 12
| SimpleMailMessage simpleMailMessage = new SimpleMailMessage();
simpleMailMessage.setFrom(String.valueOf(new InternetAddress(nick + "<" + "xxx@qq.com" + ">")));
simpleMailMessage.setTo("xxxx@163.com"); simpleMailMessage.setSubject("这是一封测试邮件!!!");
String stringBuilder = "SpirngBoot测试邮件HTML"; simpleMailMessage.setText(stringBuilder); mailSender.send(simpleMailMessage); System.out.println("邮件发送成功....");
|
邮件参数
1 2 3 4 5 6 7 8 9 10 11 12
|
public static final RecipientType TO = new RecipientType("To");
public static final RecipientType CC = new RecipientType("Cc");
public static final RecipientType BCC = new RecipientType("Bcc");
|
HTML格式邮件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| MimeMessage mimeMailMessage = null; try { mimeMailMessage = mailSender.createMimeMessage(); mimeMailMessage.addRecipients(Message.RecipientType.TO,String.valueOf(new InternetAddress("xxx@163.com"))); mimeMailMessage.addRecipients(Message.RecipientType.CC,String.valueOf(new InternetAddress("xxx@163.com"))); MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMailMessage, true); mimeMessageHelper.setFrom("xxx@qq.com"); mimeMessageHelper.setTo("xxx@163.com"); mimeMessageHelper.setSubject("邮件测试"); String sb = "<h1>SpirngBoot测试邮件HTML</h1>" + "<p style='color:#F00'>你是真的太棒了!</p>" + "<p style='text-align:right'>右对齐</p>"; mimeMessageHelper.setText(sb, true); mailSender.send(mimeMailMessage); } catch (Exception e) { logger.error("邮件发送失败", e.getMessage()); }
|
带附件邮件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| MimeMessage mimeMailMessage = null; try { mimeMailMessage = javaMailSender.createMimeMessage(); MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMailMessage, true); mimeMessageHelper.setFrom("xxx@qq.com"); mimeMessageHelper.setTo("xxx@163.com"); mimeMessageHelper.setSubject("邮件测试"); mimeMessageHelper.setText(""); FileSystemResource file = new FileSystemResource(new File("src/main/resources/static/image/mail.png")); mimeMessageHelper.addAttachment("mail.png", file); javaMailSender.send(mimeMailMessage); } catch (Exception e) { logger.error("邮件发送失败", e.getMessage()); }
|
带有图片邮件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| MimeMessage mimeMailMessage = null; try { mimeMailMessage = mailSender.createMimeMessage(); MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMailMessage, true); mimeMailMessage.addRecipients(Message.RecipientType.TO,String.valueOf(new InternetAddress("xxx@163.com"))); mimeMailMessage.addRecipients(Message.RecipientType.CC,String.valueOf(new InternetAddress("xxx@163.com"))); mimeMessageHelper.setFrom("xxx@qq.com"); mimeMessageHelper.setTo("xxx@163.com"); mimeMessageHelper.setSubject("邮件测试"); String sb = "<html><body><img src='cid:picture' /></body></html>"; mimeMessageHelper.setText(sb, true); FileSystemResource file = new FileSystemResource(new File("F:/图片/75afd5dff626dcc229afcf0ca33cc378.jpg")); mimeMessageHelper.addInline("picture", file); mailSender.send(mimeMailMessage); } catch (Exception e) { log.error("邮件发送失败{}", e.getMessage()); }
|
多人邮件
1 2
| mimeMailMessage.addRecipients(Message.RecipientType.TO,String.valueOf(new InternetAddress("xxx@163.com")));
|