<p>快速入门
<br>在Spring Boot的工程中的pom.xml中引入spring-boot-starter-mail依赖:
<br><figure class="
highlight plain"
><table><tr><td class="
gutter"
><pre><span class="
line"
>1
</span><br><span class="
line"
>2
</span><br><span class="
line"
>3
</span><br><span class="
line"
>4
</span><br><span class="
line"
>5
</span><br><span class="
line"
>6
</span><br><span class="
line"
>7
</span><br><span class="
line"
>8
</span><br><span class="
line"
>9
</span><br><span class="
line"
>10
</span><br><span class="
line"
>11
</span><br><span class="
line"
>12
</span><br><span class="
line"
>13
</span><br><span class="
line"
>14
</span><br><span class="
line"
>15
</span><br><span class="
line"
>16
</span><br><span class="
line"
>17
</span><br><span class="
line"
>18
</span><br><span class="
line"
>19
</span><br><span class="
line"
>20
</span><br><span class="
line"
>21
</span><br><span class="
line"
>22
</span><br><span class="
line"
>23
</span><br><span class="
line"
>24
</span><br><span class="
line"
>25
</span><br><span class="
line"
>26
</span><br><span class="
line"
>27
</span><br><span class="
line"
>28
</span><br><span class="
line"
>29
</span><br><span class="
line"
>30
</span><br><span class="
line"
>31
</span><br><span class="
line"
>32
</span><br><span class="
line"
>33
</span><br><span class="
line"
>34
</span><br><span class="
line"
>35
</span><br><span class="
line"
>36
</span><br><span class="
line"
>37
</span><br><span class="
line"
>38
</span><br><span class="
line"
>39
</span><br><span class="
line"
>40
</span><br><span class="
line"
>41
</span><br><span class="
line"
>42
</span><br><span class="
line"
>43
</span><br><span class="
line"
>44
</span><br><span class="
line"
>45
</span><br><span class="
line"
>46
</span><br><span class="
line"
>47
</span><br><span class="
line"
>48
</span><br><span class="
line"
>49
</span><br><span class="
line"
>50
</span><br><span class="
line"
>51
</span><br><span class="
line"
>52
</span><br><span class="
line"
>53
</span><br><span class="
line"
>54
</span><br><span class="
line"
>55
</span><br><span class="
line"
>56
</span><br><span class="
line"
>57
</span><br><span class="
line"
>58
</span><br><span class="
line"
>59
</span><br><span class="
line"
>60
</span><br><span class="
line"
>61
</span><br><span class="
line"
>62
</span><br><span class="
line"
>63
</span><br><span class="
line"
>64
</span><br><span class="
line"
>65
</span><br><span class="
line"
>66
</span><br><span class="
line"
>67
</span><br><span class="
line"
>68
</span><br><span class="
line"
>69
</span><br><span class="
line"
>70
</span><br><span class="
line"
>71
</span><br><span class="
line"
>72
</span><br><span class="
line"
>73
</span><br><span class="
line"
>74
</span><br><span class="
line"
>75
</span><br><span class="
line"
>76
</span><br><span class="
line"
>77
</span><br><span class="
line"
>78
</span><br><span class="
line"
>79
</span><br><span class="
line"
>80
</span><br><span class="
line"
>81
</span><br><span class="
line"
>82
</span><br><span class="
line"
>83
</span><br><span class="
line"
>84
</span><br><span class="
line"
>85
</span><br><span class="
line"
>86
</span><br><span class="
line"
>87
</span><br><span class="
line"
>88
</span><br><span class="
line"
>89
</span><br><span class="
line"
>90
</span><br><span class="
line"
>91
</span><br></pre></td><td class="
code"
><pre><span class="
line"
><dependency>
</span><br><span class="
line"
> <groupId>org.springframework.boot</groupId>
</span><br><span class="
line"
> <artifactId>spring-boot-starter-mail</artifactId>
</span><br><span class="
line"
></dependency>
</span><br><span class="
line"
>```
</span><br><span class="
line"
>如其他自动化配置模块一样,在完成了依赖引入之后,只需要在application.properties中配置相应的属性内容。
</span><br><span class="
line"
></span><br><span class="
line"
>下面我们以QQ邮箱为例,在application.properties中加入如下配置(注意替换自己的用户名和密码):
</span><br><span class="
line"
></span><br><span class="
line"
>spring.mail.host=smtp.qq.com
</span><br><span class="
line"
>spring.mail.username=用户名
</span><br><span class="
line"
>spring.mail.password=密码
</span><br><span class="
line"
>spring.mail.properties.mail.smtp.auth=true
</span><br><span class="
line"
>spring.mail.properties.mail.smtp.starttls.enable=true
</span><br><span class="
line"
>spring.mail.properties.mail.smtp.starttls.required=true
</span><br><span class="
line"
>通过单元测试来实现一封简单邮件的发送:
</span><br><span class="
line"
></span><br><span class="
line"
>@RunWith(SpringJUnit4ClassRunner.class)
</span><br><span class="
line"
>@SpringApplicationConfiguration(classes = Application.class)
</span><br><span class="
line"
>public class ApplicationTests {
</span><br><span class="
line"
></span><br><span class="
line"
> @Autowired
</span><br><span class="
line"
> private JavaMailSender mailSender;
</span><br><span class="
line"
></span><br><span class="
line"
> @Test
</span><br><span class="
line"
> public void sendSimpleMail() throws Exception {
</span><br><span class="
line"
> SimpleMailMessage message = new SimpleMailMessage();
</span><br><span class="
line"
> message.setFrom("
[email protected]");
</span><br><span class="
line"
> message.setTo("
[email protected]");
</span><br><span class="
line"
> message.setSubject("主题:简单邮件");
</span><br><span class="
line"
> message.setText("测试邮件内容");
</span><br><span class="
line"
></span><br><span class="
line"
> mailSender.send(message);
</span><br><span class="
line"
> }
</span><br><span class="
line"
></span><br><span class="
line"
>}
</span><br><span class="
line"
>到这里,一个简单的邮件发送就完成了,运行一下该单元测试,看看效果如何?
</span><br><span class="
line"
></span><br><span class="
line"
>由于Spring Boot的starter模块提供了自动化配置,所以在引入了spring-boot-starter-mail依赖之后,会根据配置文件中的内容去创建JavaMailSender实例,因此我们可以直接在需要使用的地方直接@Autowired来引入邮件发送对象。
</span><br><span class="
line"
>进阶使用
</span><br><span class="
line"
>在上例中,我们通过使用SimpleMailMessage实现了简单的邮件发送,但是实际使用过程中,我们还可能会带上附件、或是使用邮件模块等。这个时候我们就需要使用MimeMessage来设置复杂一些的邮件内容,下面我们就来依次实现一下。
</span><br><span class="
line"
></span><br><span class="
line"
>发送附件
</span><br><span class="
line"
>在上面单元测试中加入如下测试用例(通过MimeMessageHelper来发送一封带有附件的邮件):
</span><br><span class="
line"
></span><br><span class="
line"
> @Test
</span><br><span class="
line"
> public void sendAttachmentsMail() throws Exception {
</span><br><span class="
line"
></span><br><span class="
line"
> MimeMessage mimeMessage = mailSender.createMimeMessage();
</span><br><span class="
line"
></span><br><span class="
line"
> MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);
</span><br><span class="
line"
> helper.setFrom("
[email protected]");
</span><br><span class="
line"
> helper.setTo("
[email protected]");
</span><br><span class="
line"
> helper.setSubject("主题:有附件");
</span><br><span class="
line"
> helper.setText("有附件的邮件");
</span><br><span class="
line"
></span><br><span class="
line"
> FileSystemResource file = new FileSystemResource(new File("weixin.jpg"));
</span><br><span class="
line"
> helper.addAttachment("附件-1.jpg", file);
</span><br><span class="
line"
> helper.addAttachment("附件-2.jpg", file);
</span><br><span class="
line"
></span><br><span class="
line"
> mailSender.send(mimeMessage);
</span><br><span class="
line"
></span><br><span class="
line"
> }
</span><br><span class="
line"
>嵌入静态资源
</span><br><span class="
line"
>除了发送附件之外,我们在邮件内容中可能希望通过嵌入图片等静态资源,让邮件获得更好的阅读体验,而不是从附件中查看具体图片,下面的测试用例演示了如何通过MimeMessageHelper实现在邮件正文中嵌入静态资源。
</span><br><span class="
line"
></span><br><span class="
line"
> @Test
</span><br><span class="
line"
> public void sendInlineMail() throws Exception {
</span><br><span class="
line"
></span><br><span class="
line"
> MimeMessage mimeMessage = mailSender.createMimeMessage();
</span><br><span class="
line"
></span><br><span class="
line"
> MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);
</span><br><span class="
line"
> helper.setFrom("
[email protected]");
</span><br><span class="
line"
> helper.setTo("
[email protected]");
</span><br><span class="
line"
> helper.setSubject("主题:嵌入静态资源");
</span><br><span class="
line"
> helper.setText("<html><body><img src=\"cid:weixin\" ></body></html>", true);
</span><br><span class="
line"
></span><br><span class="
line"
> FileSystemResource file = new FileSystemResource(new File("weixin.jpg"));
</span><br><span class="
line"
> helper.addInline("weixin", file);
</span><br><span class="
line"
></span><br><span class="
line"
> mailSender.send(mimeMessage);
</span><br><span class="
line"
></span><br><span class="
line"
> }
</span><br><span class="
line"
>这里需要注意的是addInline函数中资源名称weixin需要与正文中cid:weixin对应起来
</span><br><span class="
line"
></span><br><span class="
line"
>模板邮件
</span><br><span class="
line"
>通常我们使用邮件发送服务的时候,都会有一些固定的场景,比如重置密码、注册确认等,给每个用户发送的内容可能只有小部分是变化的。所以,很多时候我们会使用模板引擎来为各类邮件设置成模板,这样我们只需要在发送时去替换变化部分的参数即可。
</span><br><span class="
line"
></span><br><span class="
line"
>在Spring Boot中使用模板引擎来实现模板化的邮件发送也是非常容易的,下面我们以velocity为例实现一下。
</span><br><span class="
line"
></span><br><span class="
line"
>引入velocity模块的依赖:
</span><br></pre></td></tr></table></figure></p>
0 commit comments