springboot实现邮件发送(java使用springboot发送邮件) -pg电子旗舰站

博主:林阳网林阳网 2022-11-30 22

spring boot 进阶-springboot整合javamailsender发送邮件 如何用qq发邮件

springboot实现邮件发送(java使用springboot发送邮件)

使用过spring 开发者对javamailsender应该不陌生,它是spring 提供邮件发送的接口。在spring boot中对这块应用也进行了自动化的封装。下面我们就来实际操作一下如何在spring boot项目中使用javamailsender进行邮件的发送操作。

创建项目

首先我们需要创建一个maven项目并且引入spring boot的基本依赖,然后再引入邮件发送相关的场景启动器,代码如下。

lt?xml version=#341.0#34 encoding=#34utf-8#34?gtltproject xmlns=#34http://maven.apache.org/pom/4.0.0#34 xmlns:xsi=#34http://www.w3.org/2001/xmlschema-instance#34 xsi:schemalocation=#34http://maven.apache.org/pom/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd#34gt ltmodelversiongt4.0.0lt/modelversiongt ltparentgt ltgroupidgtorg.springframework.bootlt/groupidgt ltartifactidgtspring-boot-starter-parentlt/artifactidgt ltversiongt2.7.5lt/versiongt ltrelativepath/gt lt!-- lookup parent from repository --gt lt/parentgt ltgroupidgtcom.exlelt/groupidgt ltartifactidgtdemolt/artifactidgt ltversiongt0.0.1-snapshotlt/versiongt ltnamegtdemolt/namegt ltdescriptiongtdemo project for spring bootlt/descriptiongt ltpropertiesgt ltjava.versiongt1.8lt/java.versiongt lt/propertiesgt ltdependenciesgt ltdependencygt ltgroupidgtorg.springframework.bootlt/groupidgt ltartifactidgtspring-boot-starter-weblt/artifactidgt lt/dependencygt ltdependencygt ltgroupidgtorg.projectlomboklt/groupidgt ltartifactidgtlomboklt/artifactidgt lt/dependencygt ltdependencygt ltgroupidgtorg.springframework.bootlt/groupidgt ltartifactidgtspring-boot-starter-maillt/artifactidgt lt/dependencygt lt/dependenciesgt ltbuildgt ltpluginsgt ltplugingt ltgroupidgtorg.springframework.bootlt/groupidgt ltartifactidgtspring-boot-maven-pluginlt/artifactidgt lt/plugingt lt/pluginsgt lt/buildgtlt/projectgt

第二步,在引入了自动配置场景启动类之后,剩余的配置与之前的其他配置一样,需要在application.yml 或者是application.properties中进行配置。下面我们演示利用 *** 邮箱邮件发送效果。

spring: #邮箱基本配置 mail: #配置 *** tp服务主机地址 host: *** tp.qq.com #发送者邮箱 username: xxxxxxx@qq.com #配置密码,注意不是真正的密码,而是刚刚申请到的授权码 password: xxxxxxxxxxx #端口号465或587 port: 587 #默认的邮件编码为utf-8 default-encoding: utf-8 #其他参数 properties: mail: #配置ssl 加密工厂 *** tp: ssl: #本地测试,先放开ssl enable: false required: false #开启debug模式,这样邮件发送过程的日志会在控制台打印出来,方便排查错误 debug: true

指定邮箱类型如下图所示

springboot实现邮件发送(java使用springboot发送邮件)

创建邮件发送实体类

这里我们创建一个一般邮件格式都有的实体类,包括收件人、邮件主题、邮件内容、以及附件路径等内容。

@datapublic class mailrequest implements serializable { /** * 接收人 */ private string sendto /** * 邮件主题 */ private string subject /** * 邮件内容 */ private string text /** * 附件路径 */ private string filepath}

定义一个邮件服务

完成邮件实体配置之后,我们需要定义一个邮件服务。

public interface sendmailservice { /** * 简单文本邮件 * * @param mailrequest * @return */ void sendsimplemail(mailrequest mailrequest) /** * html格式邮件,可带附件 * * @param mailrequest * @return */ void sendhtmlmail(mailrequest mailrequest)}

邮件服务实现

@servicepublic class sendmailserviceimpl implements sendmailservice { //注入邮件工具类 @autowired private javamailsender javamailsender @value(#34${spring.mail.username}#34) private string sendmailer private static final logger logger = loggerfactory.getlogger(sendmailserviceimpl.class) public void checkmail(mailrequest mailrequest) { assert.notnull(mailrequest,#34邮件请求不能为空#34) assert.notnull(mailrequest.getsendto(), #34邮件收件人不能为空#34) assert.notnull(mailrequest.getsubject(), #34邮件主题不能为空#34) assert.notnull(mailrequest.gettext(), #34邮件收件人不能为空#34) } @override public void sendsimplemail(mailrequest mailrequest) { simplemailmessage message = new simplemailmessage() checkmail(mailrequest) //邮件发件人 message.setfrom(sendmailer) //邮件收件人 1或多个 message.setto(mailrequest.getsendto().split(#34,#34)) //邮件主题 message.setsubject(mailrequest.getsubject()) //邮件内容 message.settext(mailrequest.gettext()) //邮件发送时间 message.setsentdate(new date()) javamailsender.send(message) logger.(#34发送邮件成功:{}-gt{}#34,sendmailer,mailrequest.getsendto()) } @override public void sendhtmlmail(mailrequest mailrequest) { mimemessage message = javamailsender.createmimemessage() checkmail(mailrequest) try { mimemessagehelper helper = new mimemessagehelper(message,true) //邮件发件人 helper.setfrom(sendmailer) //邮件收件人 1或多个 helper.setto(mailrequest.getsendto().split(#34,#34)) //邮件主题 helper.setsubject(mailrequest.getsubject()) //邮件内容 helper.settext(mailrequest.gettext(),true) //邮件发送时间 helper.setsentdate(new date()) string filepath = mailrequest.getfilepath() if (stringutils.hastext(filepath)) { filesystemresource file = new filesystemresource(new file(filepath)) string filename = filepath.substring(filepath.lastindexof(file.separator)) helper.addattachment(filename,file) } javamailsender.send(message) logger.(#34发送邮件成功:{}-gt{}#34,sendmailer,mailrequest.getsendto()) } catch (messagingexception e) { logger.error(#34发送邮件时发生异常!#34,e) } }}

定义controller对邮件发送服务进行调用

@restcontroller@requestmapping(#34/sendmail#34)public class sendmailcontroller { @autowired private sendmailservice sendmailservice @postmapping(#34/simple#34) public void sendsimplemessage(@requestbody mailrequest mailrequest) { sendmailservice.sendsimplemail(mailrequest) } @postmapping(#34/html#34) public void sendhtmlmessage(@requestbody mailrequest mailrequest) { sendmailservice.sendhtmlmail(mailrequest) }}

总结

完成配置之后,调用controller接口就可以实现对指定的邮箱发送消息了。

springbootmail高级用法 springboot发邮件的配置解析
the end

发布于:2022-11-30网站图片、文章 来源于网络,以不营利的目的分享经验知识 ,pg电子娱乐平台游戏的版权归原作者所有,不代表网站站长观点,如有侵权请联系删除