← 文章归档34-Spring Boot SSM邮件
约 14 分钟阅读阅读 — 次
Spring SSM邮件
1. 邮箱配置
- 首先要配置你将要使用的发送的邮箱
- 登录你的邮箱,找到设置->POP3/SMTP/IMAP来进行开启POP3/SMTP服务和IMAP/SMTP服务
- 之后根据自己的邮箱情况找到开启授权码登录方式,拿到授权码即可。
2. 相关的POM依赖
1 2 3 4 5 6 7 8 9 10 11 12 13
| <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context-support</artifactId> <version>4.3.19.RELEASE</version> </dependency>
<dependency> <groupId>com.sun.mail</groupId> <artifactId>javax.mail</artifactId> <version>1.6.1</version> </dependency>
|
3. 在Spring中进行发送
3.1. 发送简单文本邮件
- 可以将配置文件放置到yml中
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 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77
| import org.springframework.mail.javamail.JavaMailSender; import org.springframework.mail.javamail.JavaMailSenderImpl; import org.springframework.mail.javamail.MimeMessageHelper; import org.springframework.stereotype.Component;
import javax.mail.internet.MimeMessage; import java.io.BufferedReader; import java.io.FileReader;
@Component public class MailUtil { private static JavaMailSender javaMailSender; private static String host = "smtp.qq.com"; private static String emailFrom; private static Integer SMTPPort = 465; private static String coding = "utf-8"; private static String password;
private static void initJavaMailSender() throws Exception { if(javaMailSender == null) { synchronized (MailUtil.class){ if(javaMailSender == null){ JavaMailSenderImpl mailSender = new JavaMailSenderImpl(); FileReader fileReader = new FileReader("filename"); BufferedReader bufferedReader = new BufferedReader(fileReader); emailFrom = bufferedReader.readLine(); password = bufferedReader.readLine();
mailSender.setHost(host); mailSender.setPort(SMTPPort); mailSender.setUsername(emailFrom); mailSender.setPassword(password);
Properties javaMailProperties = new Properties(); javaMailProperties.put("mail.smtp.auth", true); javaMailProperties.put("mail.smtp.starttls.enable", true); javaMailProperties.put("mail.smtp.starttls.required", true); javaMailProperties.put("mail.smtp.timeout", 5000); javaMailProperties.put("mail.smtp.ssl.enable",true); javaMailProperties.put("mail.smtp.socketFactory.class",javax.net.ssl.SSLSocketFactory.class);
mailSender.setDefaultEncoding(coding); mailSender.setJavaMailProperties(javaMailProperties);
javaMailSender = mailSender; } } } }
public void sendMessage(String toEmail, String code) throws Exception{ initJavaMailSender(); MimeMessage message = javaMailSender.createMimeMessage(); MimeMessageHelper helper = new MimeMessageHelper(message,true); helper.setFrom(emailFrom); helper.setTo(toEmail); helper.setSubject("主题");
helper.setText("内容", false); helper.setText("HTML", true);
javaMailSender.send(message); }
}
|
发送带有附件的邮件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| public void sendMessage(String toEmail, String code) throws Exception{ initJavaMailSender(); MimeMessage message = javaMailSender.createMimeMessage(); MimeMessageHelper helper = new MimeMessageHelper(message,true); helper.setFrom(emailFrom); helper.setTo(toEmail); helper.setSubject("主题");
helper.setText("内容", false); helper.setText("HTML", true);
FileSystemResource resource = new FileSystemResource("F:\\Users\\yd\\Desktop\\test.png"); helper.addAttachment("test.png", resource); javaMailSender.send(message); }
|
4. 出现的问题
- 在服务器端不能进行发送:
- 检查是不是使用的端口没有开放,可以使用telnet命令进行检查:
telnet smtp.qq.com 25
- 是不是因为必须要SSL的端口465进行发送(25端口不可以)
1 2 3 4 5 6 7 8 9 10 11
| mail: host: smtp.exmail.qq.com username: 邮箱地址 default-encoding: utf-8 password: 授权码 port: 465 properties: mail: smtp: socketFactory: class: javax.net.ssl.SSLSocketFactory
|
- 端口情况:
- 25端口:使用普通简单加密类型的端口
- 465端口:使用SSL加密方式的端口
- 567端口:使用TSL加密方式的端口
5. 参考
- SSM 框架整合 spring 发送邮件功能实现!
- Springboot邮件发送 部署到服务器后邮件不能发送问题
- 使用 spring封装的javamail linux服务器发送邮件失败解决
- Spring发送邮件
评论