SpringBoot整合JavaMail实现发邮件的项目实践
作者:-代号9527
本文主要介绍了SpringBoot整合JavaMail实现发邮件的项目实践,详细阐述了使用SpringBoot和JavaMail发送邮件的步骤,具有一定的参考价值,感兴趣的可以了解一下
0、相关协议
- SMTP(Simple Mail Transfer Protocol):简单邮件传输协议,用于发送电子邮件的传输协议
- POP3(Post Office Protocol - Version 3):用于接收电子邮件的标准协议
- IMAP(Internet Mail Access Protocol):互联网消息协议,是POP3的替代协议
1、SpringBoot整合JavaMail
STEP1:
加入JavaMail起步依赖:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId> </dependency>
STEP2:
相关配置:
spring: mail: host: smtp.qq.com # 发邮件,smtp协议,后面.运营商 username: *********@qq.com password: ********* # 不是邮箱的密码,是下面获取的一个授权码
注意password,不是邮箱的登录密码,是一个授权码,获取方式,在QQ邮箱中是【设置】-【邮箱账号】-【开启】
发送验证短信:
然后在上个页面点保存更改,(记得点保存更改)复制这个授权码就是password的值,即可配置邮件客户端成功。
其他类型的邮箱获取方式类似,比如163:
STEP3:
注入JavaMailSender对象,定义发送邮件的接口
@Autowired private JavaMailSender javaMailSender;
整合完成,下面按简单邮件和复杂邮件来写。简单即普通文本,复杂即超链接、附件等。
2、发送简单邮件
以下用QQ邮箱给163邮箱发一个简单文本的邮件:
//定义接口 public interface SendMailService{ void sendMail(); }
//实现类 @Service public class SendMailServiceImpl implements SendMailService { @Autowired private JavaMailSender javaMailSender; //这些值也可以不硬编码,写在配置文件中@Value取值 private String from = "********@qq.com"; // 发送人 private String to = "********@126.com"; // 接收人 private String subject = "测试邮件"; // 邮件主题 private String text = "测试邮件正文"; // 邮件内容 @Override public void sendMail() { SimpleMailMessage mailMessage = new SimpleMailMessage(); //mailMessage.setFrom(from); //from后面加个名字,比如xxx公司,不然发送发一串邮箱数字,谁知道你是谁 mailMessage.setFrom(from + "别名"); //这里的to是个可变长String,即可发送多人 mailMessage.setTo(to); mailMessage.setSubject(subject); mailMessage.setText(text); //mailMessage.setSendDate(); //设置发送的时间 //其他设置自行set javaMailSender.send(mailMessage); //发送 } }
写个测试类看下效果:
联不通:
我在公司内网写的,网络不通,不是25端口被禁的原因,在外网是可以ping通smtp.qq.com这个host的。先跳过了。
3、发送复杂邮件
正文为html,比如超链接或者图片。以及发送附件:
//超链接 private String text = "<a href='https://www.baidu.com/'>百度</a>"; //图片 private String img = "<img src='https://pic35.photophoto.cn/20150511/0034034892281415_b.jpg' />"; @Override public void sendMail() { try { MimeMessage mimeMessage = javaMailSender.createMimeMessage(); //第二个参数,即是否允许添加多部件 //我后面要添加各种附件,所以这里必须是true MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage,true); mimeMessageHelper.setFrom(from); mimeMessageHelper.setTo(to); mimeMessageHelper.setSubject(subject); //不加true,默认当普通文本,true即按html来解析 mimeMessageHelper.setText(text,true); //添加附件 File file1 = new File("logo.png"); File file2 = new File("D:\\myboot.jar"); //如果是手写文件名,记得添加个后缀,比如.png,方便在邮件里可预览 mimeMessageHelper.addAttachment(file1.getName(),file1); mimeMessageHelper.addAttachment("一个jar包.jar",file2); javaMailSender.send(mimeMessage); } catch (Exception e) { e.printStackTrace(); } }
注意点:
- 不再用简单消息对象,而是MimeMessage对象,并把它包装成mimeMessageHelper对象
- 要传附件的话,mimeMessageHelper对象构造方法的第二个参数传true
- setText方法重载,第二个参数传true,就是讲text按照html来解析,而不是普通文本
- 注意最后send的还是MimeMessage对象,不是mimeMessageHelper对象
到此这篇关于SpringBoot整合JavaMail实现发邮件的项目实践的文章就介绍到这了,更多相关SpringBoot JavaMail发邮件内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!