本文介绍: 我在公司内网写的,网络不通,不是25端口被禁的原因,在外网是可以ping通smtp.qq.com这个host的。注意password,不是邮箱的登录密码,是一个授权码,获取方式,在QQ邮箱中是【设置】-【邮箱账号】-【开启】然后在上个页面点保存更改,(记得点保存更改)复制这个授权码就是password的值,即可配置邮件客户端成功。整合完成,下面按简单邮件和复杂邮件来写。简单即普通文本,复杂即超链接、附件等。注入JavaMailSender对象,定义发送邮件的接口。正文为html,比如超链接或者图片。
0、相关协议
- SMTP(Simple Mail Transfer Protocol):简单邮件传输协议,用于发送电子邮件的传输协议
- POP3(Post Office Protocol – Version 3):用于接收电子邮件的标准协议
- IMAP(Internet Mail Access Protocol):互联网消息协议,是POP3的替代协议
1、SpringBoot整合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的值,即可配置邮件客户端成功。
STEP3:
注入JavaMailSender对象,定义发送邮件的接口
@Autowired
private JavaMailSender javaMailSender;
整合完成,下面按简单邮件和复杂邮件来写。简单即普通文本,复杂即超链接、附件等。
2、发送简单邮件
//定义接口
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、发送复杂邮件
//超链接
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对象
原文地址:https://blog.csdn.net/llg___/article/details/133593862
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_42686.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。