zoukankan      html  css  js  c++  java
  • Spring boot 发送邮件

    Springboot发送邮件

    1、添加依赖
    1. <!-- 发送邮件. -->
    2. <dependency>
    3. <groupId>org.springframework.boot</groupId>
    4. <artifactId>spring-boot-starter-mail</artifactId>
    5. </dependency>
    2、配置application.properties

    设置邮箱主机,以QQ邮箱为例子
    spring.mail.host=smtp.qq.com
    设置用户名,邮箱地址
    spring.mail.username=XXX@qq.com
    设置密码,此密码是授权码而不是qq邮箱密码
    spring.mail.password=kjhleetwedyubbcc
    设置是否需要认证,如果为true,那么用户名和密码就必须的,
    如果设置false,可以不设置用户名和密码,当然也得看你的对接的平台是否支持无密码进行访问的。

    spring.mail.properties.mail.smtp.auth=true
    STARTTLS[1] 是对纯文本通信协议的扩展。
    它提供一种方式将纯文本连接升级为加密连接(TLS或SSL),而不是另外使用一个端口作加密通信。

    spring.mail.properties.mail.smtp.starttls.enable=true
    spring.mail.properties.mail.smtp.starttls.required=true

    3、开启邮箱服务

    登录QQ邮箱,进行设置,如下图。

    设置完成之后,得到的授权码就是上面第二步设置的密码。

    4、测试代码(不带附件)

    @RunWith(SpringJUnit4ClassRunner.class)
    @SpringBootTest
    public class AppMailTest {
    @Autowired
    private JavaMailSender javaMailSender;

    1. /*
    2. * 修改application.properties的用户才可以发送
    3. */
    4. @Test
    5. public void sendSimpleMail(){
    6. SimpleMailMessage message=new SimpleMailMessage();
    7. message.setFrom("xxx@qq.com");//发送者
    8. message.setTo("xxx@qq.com");//接收者
    9. message.setSubject("发送邮件测试");//标题
    10. message.setText("邮件内容");//邮件内容
    11. javaMailSender.send(message);//发送邮件
    12. }}
    5、测试代码(带附件)

    @RunWith(SpringJUnit4ClassRunner.class)
    @SpringBootTest
    public class AppMailsTest {
    @Autowired
    private JavaMailSender mailSender;

    1. /*
    2. * 测试发送附件.(这里发送图片.)
    3. */
    4. @Test
    5. public void sendSimpleMail() throws MessagingException {
    6. //这个是javax.mail.internet.MimeMessage下的
    7. MimeMessage message=mailSender.createMimeMessage();
    8. MimeMessageHelper helper=new MimeMessageHelper(message,true);
    9. //基本设置
    10. helper.setFrom("747024934@qq.com");//发送者
    11. helper.setTo("3067810776@qq.com");//接收者
    12. helper.setSubject("图片");//邮件主题
    13. helper.setText("附件测试");//邮件内容
    14. //org.springframework.core.io.FileSystemResource下的:
    15. //附件1,获取文件对象.
    16. FileSystemResource resource=new FileSystemResource(new File("E:\images\1.jpg"));
    17. //添加附件,这里第一个参数是在邮件中显示的名称,也可以直接是head.jpg,但是一定要有文件后缀,不然就无法显示图片了。
    18. helper.addAttachment("美女.jpg",resource);
    19. //附件2
    20. FileSystemResource resource1=new FileSystemResource(new File("E:\images\桌面1.jpg"));
    21. helper.addAttachment("桌面.jpg",resource1);
    22. mailSender.send(message);
    23. }

    }
    6、测试代码(嵌入静态资源)
    @RunWith(SpringJUnit4ClassRunner.class)
    @SpringBootTest
    public class AppMails1Test {
    @Autowired
    private JavaMailSender mailSender;

    1. /*
    2. * 测试发送附件.(这里发送图片.),邮件中使用静态资源.
    3. */
    4. @Test
    5. public void sendSimpleMail() throws MessagingException {
    6. //这个是javax.mail.internet.MimeMessage下的
    7. MimeMessage message=mailSender.createMimeMessage();
    8. MimeMessageHelper helper=new MimeMessageHelper(message,true);
    9. //基本设置
    10. helper.setFrom("747024934@qq.com");//发送者
    11. helper.setTo("3067810776@qq.com");//接收者
    12. helper.setSubject("图片(邮件主题)");//邮件主题
    13. // 邮件内容,第二个参数指定发送的是HTML格式
    14. //说明:嵌入图片<img src='cid:head'/>,其中cid:是固定的写法,而images是一个contentId。
    15. helper.setText("<body>这是图片:<img src='cid:images' /> </body>",true);//邮件内容
    16. //org.springframework.core.io.FileSystemResource下的:
    17. //附件1,获取文件对象.
    18. FileSystemResource resource=new FileSystemResource(new File("E:\images\1.jpg"));
    19. //添加附件,这里第一个参数是在邮件中显示的名称,也可以直接是head.jpg,但是一定要有文件后缀,不然就无法显示图片了。
    20. helper.addInline("images",resource);
    21. mailSender.send(message);
    22. }

    }
    这里需要注意的是addInline函数中资源名称head需要与正文中cid:images对应起来
    嵌入图片<img src='cid:images'/>,其中cid:是固定的写法,而images是一个contentId。

    5、运行代码

    如果以上都按步骤设置完成了,这是邮件发送成功。

    参考博客:http://412887952-qq-com.iteye.com/blog/2305992

  • 相关阅读:
    javascript 杂记
    Sublime Text 3 杂记
    Visual Studio命令行工具
    iOS Crash日志
    Cocos引擎开发者指南(1-5)
    Linux防火墙配置(iptables, firewalld)
    jenkins使用git SCM时changelog乱码(Jenkins部署在Linux上,任务在Windows Slave上构建)
    C#枚举类型
    Java 实现大转盘抽奖
    HaspMap和ConcurrentHashMap
  • 原文地址:https://www.cnblogs.com/ming-blogs/p/10288845.html
Copyright © 2011-2022 走看看