Spring Boot整合邮件发送与注意事项
什么是SpringBoot
SpringBoot是一个框架,其设计目的是简化Spring应用的初始搭建配置以及开发过程。该框架使用了特定的配置方式,从而使开发人员不在需要定义样板化的配置。
SpringBoot的好处
1、配置简单;
2、编码简单;
3、部署简单;
4、监控简单;
概述
SpringBoot下面整合了邮件服务器,使用SpringBoot能够轻松实现邮件发送;整理下最近使用SpringBoot发送邮件和注意事项;
Maven包依赖
org.springframework.boot spring-boot-starter-mail
SpringBoot的配置
spring.mail.host=smtp.servie.com spring.mail.username=用户名//发送方的邮箱 spring.mail.password=密码//对于qq邮箱而言密码指的就是发送方的授权码 spring.mail.properties.mail.smtp.auth=true spring.mail.properties.mail.smtp.starttls.enable=false#是否用启用加密传送的协议验证项 spring.mail.properties.mail.smtp.starttls.required=fasle#是否用启用加密传送的协议验证项 #注意:在spring.mail.password处的值是需要在邮箱设置里面生成的授权码,这个不是真实的密码。
Spring代码实现
packagecom.dbgo.webservicedemo.email;
importorg.springframework.beans.factory.annotation.Autowired;
importorg.springframework.core.io.FileSystemResource;
importorg.springframework.mail.javamail.JavaMailSender;
importorg.springframework.mail.javamail.MimeMessageHelper;
importorg.springframework.stereotype.Component;
importjavax.mail.MessagingException;
importjavax.mail.internet.MimeMessage;
importjava.io.File;
@Component("emailtool")
publicclassEmailTool{
@Autowired
privateJavaMailSenderjavaMailSender;
publicvoidsendSimpleMail(){
MimeMessagemessage=null;
try{
message=javaMailSender.createMimeMessage();
MimeMessageHelperhelper=newMimeMessageHelper(message,true);
helper.setFrom("jiajinhao@dbgo.cn");
helper.setTo("653484166@qq.com");
helper.setSubject("标题:发送Html内容");
StringBuffersb=newStringBuffer();
sb.append("大标题-h1
")
.append("红色字")
.append("右对齐");
helper.setText(sb.toString(),true);
FileSystemResourcefileSystemResource=newFileSystemResource(newFile("D:\76678.pdf"))
helper.addAttachment("电子发票",fileSystemResource);
javaMailSender.send(message);
}catch(MessagingExceptione){
e.printStackTrace();
}
}
}
非SpringBoot下发送电子邮件:
Maven包依赖
com.sun.mail javax.mail 1.5.2
DEMO1代码事例
packagecom.justin.framework.core.utils.email;
importjava.io.File;
importjava.io.FileInputStream;
importjava.io.FileNotFoundException;
importjava.io.FileOutputStream;
importjava.io.IOException;
importjava.io.InputStream;
importjava.io.UnsupportedEncodingException;
importjava.util.Date;
importjava.util.Properties;
importjavax.activation.DataHandler;
importjavax.activation.DataSource;
importjavax.activation.FileDataSource;
importjavax.mail.Address;
importjavax.mail.Authenticator;
importjavax.mail.Message;
importjavax.mail.Message.RecipientType;
importjavax.mail.MessagingException;
importjavax.mail.PasswordAuthentication;
importjavax.mail.Session;
importjavax.mail.Transport;
importjavax.mail.internet.InternetAddress;
importjavax.mail.internet.MimeBodyPart;
importjavax.mail.internet.MimeMessage;
importjavax.mail.internet.MimeMultipart;
importjavax.mail.internet.MimeUtility;
/**
*使用SMTP协议发送电子邮件
*/
publicclasssendEmailCode{
//邮件发送协议
privatefinalstaticStringPROTOCOL="smtp";
//SMTP邮件服务器
privatefinalstaticStringHOST="mail.tdb.com";
//SMTP邮件服务器默认端口
privatefinalstaticStringPORT="25";
//是否要求身份认证
privatefinalstaticStringIS_AUTH="true";
//是否启用调试模式(启用调试模式可打印客户端与服务器交互过程时一问一答的响应消息)
privatefinalstaticStringIS_ENABLED_DEBUG_MOD="true";
//发件人
privatestaticStringfrom="tdbjrcrm@tdb.com";
//收件人
privatestaticStringto="db_yangruirui@tdbcwgs.com";
privatestaticStringsenduserName="tdbjrcrm@tdb.com";
privatestaticStringsenduserPwd="New*2016";
//初始化连接邮件服务器的会话信息
privatestaticPropertiesprops=null;
static{
props=newProperties();
props.setProperty("mail.enable","true");
props.setProperty("mail.transport.protocol",PROTOCOL);
props.setProperty("mail.smtp.host",HOST);
props.setProperty("mail.smtp.port",PORT);
props.setProperty("mail.smtp.auth",IS_AUTH);//视情况而定
props.setProperty("mail.debug",IS_ENABLED_DEBUG_MOD);
}
/**
*发送简单的文本邮件
*/
publicstaticbooleansendTextEmail(Stringto,intcode)throwsException{
try{
//创建Session实例对象
Sessionsession1=Session.getDefaultInstance(props);
//创建MimeMessage实例对象
MimeMessagemessage=newMimeMessage(session1);
//设置发件人
message.setFrom(newInternetAddress(from));
//设置邮件主题
message.setSubject("内燃机注册验证码");
//设置收件人
message.setRecipient(RecipientType.TO,newInternetAddress(to));
//设置发送时间
message.setSentDate(newDate());
//设置纯文本内容为邮件正文
message.setText("您的验证码是:"+code+"!验证码有效期是10分钟,过期后请重新获取!"
+"中国内燃机学会");
//保存并生成最终的邮件内容
message.saveChanges();
//获得Transport实例对象
Transporttransport=session1.getTransport();
//打开连接
transport.connect("meijiajiang2016","");
//将message对象传递给transport对象,将邮件发送出去
transport.sendMessage(message,message.getAllRecipients());
//关闭连接
transport.close();
returntrue;
}catch(Exceptione){
e.printStackTrace();
returnfalse;
}
}
publicstaticvoidmain(String[]args)throwsException{
sendHtmlEmail("db_yangruirui@tdbcwgs.com",88888);
}
/**
*发送简单的html邮件
*/
publicstaticbooleansendHtmlEmail(Stringto,intcode)throwsException{
//创建Session实例对象
Sessionsession1=Session.getInstance(props,newMyAuthenticator());
//创建MimeMessage实例对象
MimeMessagemessage=newMimeMessage(session1);
//设置邮件主题
message.setSubject("内燃机注册");
//设置发送人
message.setFrom(newInternetAddress(from));
//设置发送时间
message.setSentDate(newDate());
//设置收件人
message.setRecipients(RecipientType.TO,InternetAddress.parse(to));
//设置html内容为邮件正文,指定MIME类型为text/html类型,并指定字符编码为gbk
message.setContent("内燃机注册验证码尊敬的用户您好:您在注册内燃机账号,此次的验证码是:"+code+",有效期10分钟!如果过期请重新获取。中国内燃机学会 DEMO2代码事例:
packagecom.justin.framework.core.utils.email;
importjava.util.HashSet;
importjava.util.Properties;
importjava.util.Set;
importjavax.activation.DataHandler;
importjavax.activation.FileDataSource;
importjavax.mail.Address;
importjavax.mail.BodyPart;
importjavax.mail.Message;
importjavax.mail.Multipart;
importjavax.mail.Session;
importjavax.mail.Transport;
importjavax.mail.internet.InternetAddress;
importjavax.mail.internet.MimeBodyPart;
importjavax.mail.internet.MimeMessage;
importjavax.mail.internet.MimeMultipart;
importjavax.mail.internet.MimeUtility;
publicclassMailManagerUtils{
//发送邮件
publicstaticbooleansendMail(Emailemail){
Stringsubject=email.getSubject();
Stringcontent=email.getContent();
String[]recievers=email.getRecievers();
String[]copyto=email.getCopyto();
Stringattbody=email.getAttbody();
String[]attbodys=email.getAttbodys();
if(recievers==null||recievers.length<=0){
returnfalse;
}
try{
Propertiesprops=newProperties();
props.setProperty("mail.enable","true");
props.setProperty("mail.protocal","smtp");
props.setProperty("mail.smtp.auth","true");
props.setProperty("mail.user","tdbjrcrm@tdb.com");
props.setProperty("mail.pass","New***");
props.setProperty("mail.smtp.host","mail.tdb.com");
props.setProperty("mail.smtp.from","tdbjrcrm@tdb.com");
props.setProperty("mail.smtp.fromname","tdbVC");
//创建一个程序与邮件服务器的通信
SessionmailConnection=Session.getInstance(props,null);
Messagemsg=newMimeMessage(mailConnection);
//设置发送人和接受人
Addresssender=newInternetAddress(props.getProperty("mail.smtp.from"));
//多个接收人
msg.setFrom(sender);
SettoUserSet=newHashSet();
//邮箱有效性较验
for(inti=0;icopyToUserSet=newHashSet();
//邮箱有效性较验
for(inti=0;i
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对毛票票的支持。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。