最新消息:

Spring Boot 发送邮件

SpringBoot fishpro 76浏览
文章目录
[隐藏]

Spring Boot 使用 JavaMailSender 来发送邮件,Spring Boot 是用来自动配置实现配置。邮件发送没有什么技术难点,拿来即用。

本项目源码下载

1 新建 Spring Boot Maven 示例工程项目

注意:是用来 IDEA 开发工具
1. File > New > Project,如下图选择 Spring Initializr 然后点击 【Next】下一步
2. 填写 GroupId(包名)、Artifact(项目名) 即可。点击 下一步
groupId=com.fishpro
artifactId=sendemail
3. 选择依赖 Spring Web Starter 前面打钩。
4. 项目名设置为 spring-boot-study-sendemail.

2 引入依赖 Pom

包括了
– mail
– freemarker

 <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-mail</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-freemarker</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

3 配置邮件信息

# JavaMailSender 邮件发送的配置
spring.mail.host=smtp.qq.com
spring.mail.username=用户qq邮箱
#QQ邮箱的授权码
spring.mail.password=授权码
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true
spring.mail.properties.mail.smtp.starttls.required=true
spring.mail.default-encoding=UTF-8

4 编写示例代码

本示例中编写了一个RestController 类 MailController,以下是功能片段

4.1 发送文本邮件

“`java
/**
* 发送文本标题 文本内容
* */
@GetMapping("/sendMail")
public String sendMail(){
try{

<pre><code> SimpleMailMessage message = new SimpleMailMessage();
message.setFrom(sendUser);
message.setTo(&quot;fishpro@vip.qq.com&quot;);
message.setSubject(&quot;主题邮件&quot;);
message.setText(&quot;邮件内容&quot;);
mailSender.send(message);
return &quot;success&quot;;
}catch (Exception e){
e.printStackTrace();
return &quot;fail&quot;;
}
}
</code></pre>

“`

4.2 发送邮件内容为 Html 的邮件

“`java
/**
* 发送html内容
* */
@GetMapping("/sendHtmlMail")
public String sendHtmlMail(){
MimeMessage message=null;
try{

<pre><code> message = mailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(message,true);
helper.setFrom(sendUser);
helper.setTo(&quot;fishpro@vip.qq.com&quot;);
helper.setSubject(&quot;主题邮件&quot;);
StringBuilder sb=new StringBuilder();
sb.append(&quot;&lt;h1>尊敬的客户您好!&lt;/h1>&quot;)
.append(&quot;欢迎您访问我的博客 www.fishpro.com.cn&lt;/p>&quot;);
helper.setText(sb.toString(),true);
}catch (Exception e){
e.printStackTrace();
return &quot;fail&quot;;
}
mailSender.send(message);
return &quot;success&quot;;
}
</code></pre>

“`

4.3 发送带有附件的邮件

“`java
/**
* 发送附件内容
* */
@GetMapping("/sendAttachMail")
public String sendAttachMail(){
MimeMessage message=null;
try{

<pre><code> message = mailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(message,true);
helper.setFrom(sendUser);
helper.setTo(&quot;fishpro@vip.qq.com&quot;);
helper.setSubject(&quot;主题邮件&quot;);
StringBuilder sb=new StringBuilder();
sb.append(&quot;&lt;h1>尊敬的客户您好!&lt;/h1>&quot;)
.append(&quot;&lt;p>欢迎您访问我的博客 www.fishpro.com.cn&lt;/p>&quot;);
helper.setText(sb.toString(),true);
//获取附件资源
FileSystemResource fileSystemResource =new FileSystemResource(new File(&quot;&quot;));
//把附件资源加入到发送消息中
helper.addAttachment(&quot;&quot;,fileSystemResource);

}catch (Exception e){
e.printStackTrace();
return &quot;fail&quot;;
}
mailSender.send(message);
return &quot;success&quot;;
}
</code></pre>

“`

4.4 发送带静态资源的邮件

“`java
/**
* 发送带静态资源的邮件
* */
@GetMapping("/sendInlineMail")
public String sendInlineMail(){
MimeMessage message=null;
try{

<pre><code> message = mailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(message,true);
helper.setFrom(sendUser);
helper.setTo(&quot;fishpro@vip.qq.com&quot;);
helper.setSubject(&quot;主题邮件&quot;);
StringBuilder sb=new StringBuilder();
sb.append(&quot;&lt;h1>尊敬的客户您好!&lt;/h1>&quot;)
.append(&quot;&lt;p>欢迎您访问我的博客 www.fishpro.com.cn
</code></pre>

<p><img src='cid:pic' /></p>");
helper.setText(sb.toString(),true);
//获取附件资源
FileSystemResource fileSystemResource =new FileSystemResource(new File(""));
//把附件资源加入到发送消息中
helper.addInline("pic",fileSystemResource);

<pre><code> }catch (Exception e){
e.printStackTrace();
return &quot;fail&quot;;
}
mailSender.send(message);
return &quot;success&quot;;
}
</code></pre>

“`

4.5 发送基于 freemarker 模板内容的邮件

“`java
/**
* 基于 freemarker 模板发送
* */
@GetMapping("/sendTemplateMail")
public String sendTemplateMail(){
MimeMessage message = null;
try{

<pre><code> message = mailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(message,true);
helper.setFrom(sendUser);
helper.setTo(&quot;fishpro@vip.qq.com&quot;);
helper.setSubject(&quot;主题邮件&quot;);
Map&lt;String,Object> model =new HashMap&lt;>();
model.put(&quot;welcome&quot;,&quot;欢迎您,hello world template email &quot;);
//使用 freeMarkerConfigurer 获取模板 index.ftl
Template template = freeMarkerConfigurer.getConfiguration().getTemplate(&quot;index.ftl&quot;);
String html = FreeMarkerTemplateUtils.processTemplateIntoString(template, model);
helper.setText(html, true);

}catch (Exception e){
e.printStackTrace();
return &quot;fail&quot;;
}
mailSender.send(message);
return &quot;success&quot;;
}
</code></pre>

“`

完整代码
本项目源码下载


参考:
https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-email.html

转载请注明:程序鱼 » Spring Boot 发送邮件