admin管理员组文章数量:1559090
目录
一、获取邮箱授权码
二、引入依赖
三、配置文件(请注意yml格式,或者使用.properties)
四、不带附件发邮箱
五、带附件发邮箱
六、邮箱类型拓展
本篇文章以qq邮箱作为发件人写案例演示了不带附件发邮件、带附件发邮件,并在最后讲解了如何用阿里云邮箱、腾讯邮箱、网易邮箱发送邮件.如果不想用qq邮箱,那么可以直接跳过获取邮箱授权码,直接从引入依赖开始看。
一、获取邮箱授权码
使用springboot发送邮箱,首先需要有邮箱的授权码,用qq邮箱,那就获取qq邮箱的授权码,网易邮箱,就获取网易邮箱授权码,打开qq邮箱的设置,点击账户,找到一下信息:
点击开启,按照弹出框操作,随后要把给出的邮箱授权码复制出来 !!!如果想要将发送历史保留在邮箱的已发送,将下图红框选项的勾选即可
二、引入依赖
org.springframework.boot
spring-boot-starter-mail
三、配置文件(请注意yml格式,或者使用.properties)
spring:
mail:
host: smtp.qq #这是邮箱服务器地址
username: 1065055030@qq #自己的邮箱,也就是发件人
password: xxxxxxxxxxxxxxxxx #邮箱授权码
default-encoding: utf-8 #编码格式
配置文件中的password并不是邮箱密码,而是邮箱授权码,此处填写从qq邮箱复制出来的授权码即可
四、不带附件发邮箱
到此配置已经结束,还是非常简单的,下面就来使用,直接上代码,带注释,阅读完即可上手使用,这里不要纠结开发规范了,为了方便,所有东西写到了controller。
@restcontroller
public class emailcontroller {
@autowired
private javamailsender javamailsender;
//发件人邮箱
@value("${spring.mail.username}")
private string from;
/**
* 不带附件发送邮件
* @param addressee 收件人邮箱
* @param subject 邮件标题
* @param content 邮件内容
* @return resultvo
*/
@requestmapping(value = "/send", method = requestmethod.post)
public resultvo sendemail(string addressee, string subject, string content) {
simplemailmessage mailmessage = new simplemailmessage();
// 发件人邮箱,与配置文件中保持一致,所以直接从配置文件绑定过来了
mailmessage.setfrom(from);
// 这个发件人也可以设置为中文名称, 如下代码
// mailmessage.setfrom(new internetaddress("某某公司xxx" "<" from ">"));
// 收件人
mailmessage.setto(addressee);
// 标题
mailmessage.setsubject(subject);
// 内容, 第一个参数为邮箱内容, 第二个参数为是否启用html格式,
// 如果开启, 那么第一个参数如果有html标签, 会自动识别, 邮件样式更好看
mailmessage.settext(content, true);
javamailsender.send(mailmessage);
return resultvo.success();
}
}
五、带附件发邮箱
直接上代码了,此处需要注意的是,即使带附件发送,邮件内容也不能不设置,不设置发送内容则为null,就会报java.io.ioexception: exception writing multipart这个异常,注意null跟""是有区别的,没有内容可以这么写messagehelper.settext("")。
@restcontroller
public class emailcontroller {
@autowired
private javamailsender javamailsender;
//发件人邮箱
@value("${spring.mail.username}")
private string from;
@requestmapping(value = "/sendfile", method = requestmethod.post)
public resultvo sendfile(string addressee, string subject) {
list files = arrays.aslist("c:\\users\\e480\\desktop\\邮件测试文件.txt",
"c:\\users\\e480\\desktop\\邮件测试图片.png");
mimemessage message = javamailsender.createmimemessage();
try {
mimemessagehelper messagehelper = new mimemessagehelper(message,true);
// 发件人邮箱,与配置文件中保持一致,所以直接从配置文件绑定过来了
messagehelper.setfrom(from);
// 收件人
messagehelper.setto(addressee);
// 标题
messagehelper.setsubject(subject);
// 发送的内容
messagehelper.settext("测试带附件发邮件");
filesystemresource file=null;
for (string filepath : files) {
file = new filesystemresource(filepath);
// file.separator相当于\,是默认的系统文件分隔符,可以防止切换系统路径出错
messagehelper.addattachment(
filepath.substring(filepath.lastindexof(file.separator)), file
);
}
javamailsender.send(message);
return resultvo.success();
} catch (messagingexception e) {
e.printstacktrace();
return resultvo.fail();
}
}
}
六、邮箱类型拓展
1. 网易邮箱
我是用qq邮箱举例的,如果想要用网易邮箱,配置文件可以这么写,
spring:
mail:
host: smtp.163 #这是网易邮箱服务器地址
username: xxxxxxxx #自己的网易邮箱,也就是发件人
password: xxxxxxxx #网易邮箱授权码
default-encoding: utf-8 #编码格式
将邮箱服务器地址改为网易,username和password也改为网易的即可,网易的邮箱授权码如何查看如何打开就不再演示,因为本人没有网易邮箱(lll¬ω¬),百度了一下,看与qq邮箱授权码获取方式大同小异。剩余的操作跟qq邮箱发送方式一样。
2. 腾讯企业邮箱or阿里云邮箱
spring:
# 发送腾讯企业邮箱邮件配置
mail:
host: smtp.exmail.qq # 如果是阿里云邮箱用 smtp.aliyun, 其余都一样
protocol: smtp
port: 465
username: xxxx@xxx #邮箱地址
password: xxxx #邮箱密码,邮箱的登陆密码,这个不是授权码
properties: # 配置以ssl的方式发送, 这个需要使用这种方式并且端口是465
mail:
smtp:
auth: true
ssl:
enable: true
socketfactory:
class: com.sun.mail.util.mailsslsocketfactory
fallback: false
别的操作也没什么区别
j9九游会老哥俱乐部交流区的版权声明:本文标题:springboot发送邮件(qq邮箱、腾讯企业邮箱、网易邮箱、阿里云邮箱...) 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/dongtai/1727421514a1113634.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论