SpringBoot(十三):JavaMailSender邮件服务

栏目: Java · 发布时间: 6年前

内容简介:本作品采用本文作者:低调小熊猫文章链接:

本作品采用 知识共享署名 4.0 国际许可协议 进行许可。

本文作者:低调小熊猫

文章链接: https://aodeng.cc/archives/springbootshisans

转载声明:自由转载-非商用-非衍生-保持署名,非商业转载请注明作者及出处,商业转载请联系作者本人qq:2696284032

简介

发送邮件可以实现,注册验证,忘记密码等功能,还可以打广告,可谓很nice的功能了

使用

添加依赖

<!--mail-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-mail</artifactId>
        </dependency>

配置文件

spring:
  mail:
    host: *** #//邮箱服务器地址
    username: ***
    password: ***
    default-encoding: UTF-8
#以谁来发送邮件
mail.fromMail.addr: ***

封装接口

public interface EmailService {
    void sendTextEmail(String to,String subject,String content);
    void sendHtmlEmali(String to,String subject,String content);
    void sendAttachmentsEmail(String to,String subject,String content,String filePath);
    void sendStaticResourcesEmail(String to,String subject,String content,String rscPath,String rscId);
}

实现接口,这里是关键代码了

/**
 * @program:hope
 * @author:aodeng
 * @create:2018-10-11 13:25
 **/
@Service
public class EmaliServiceImpl implements EmailService {

    private static final Logger log= LoggerFactory.getLogger(EmaliServiceImpl.class);
    @Autowired
    private JavaMailSender mailSender;

    @Value("${mail.fromMail.addr}")
    private String from;

    /***
     * 发送文本邮件
     * @param to
     * @param subject
     * @param content
     */
    @Override
    public void sendTextEmail(String to, String subject, String content) {
        SimpleMailMessage mailMessage=new SimpleMailMessage();
        mailMessage.setFrom(from);
        mailMessage.setTo(to);
        mailMessage.setSubject(subject);
        mailMessage.setText(content);
        try {
            mailSender.send(mailMessage);
            log.info("[文本邮件发送成功,当前时间]-[{}]",new Date());
        }catch (Exception e){
            e.printStackTrace();
        }
    }

    /***
     * html邮件
     * @param to
     * @param subject
     * @param content
     */
    @Override
    public void sendHtmlEmali(String to, String subject, String content) {
        MimeMessage message=mailSender.createMimeMessage();
        try {
            MimeMessageHelper helper=new MimeMessageHelper(message,true);//true表示创建一个multipart message
            helper.setFrom(from);
            helper.setTo(to);
            helper.setSubject(subject);
            helper.setText(content);
            //发送邮件
            mailSender.send(message);
            log.info("[html邮件发送成功,当前时间]-[{}]",new Date());
        }catch (MessagingException e){
            e.printStackTrace();
        }
    }

    /***
     * 附件邮件
     * @param to
     * @param subject
     * @param content
     * @param filePath
     */
    @Override
    public void sendAttachmentsEmail(String to, String subject, String content, String filePath) {
        MimeMessage message=mailSender.createMimeMessage();
        try {
            MimeMessageHelper helper=new MimeMessageHelper(message,true);//true表示创建一个multipart message
            helper.setFrom(from);
            helper.setTo(to);
            helper.setSubject(subject);
            helper.setText(content,true);
            //上传附件
            FileSystemResource resource=new FileSystemResource(new File(filePath));
            String fileName=filePath.substring(filePath.lastIndexOf(File.separator));
            helper.addAttachment(fileName,resource);
            //发送邮件
            mailSender.send(message);
            log.info("[附件邮件发送成功,当前时间]-[{}]",new Date());
        }catch (MessagingException e){
            e.printStackTrace();
        }
    }

    /***
     * 嵌入静态资源邮件
     * @param to
     * @param subject
     * @param content
     * @param rscPath
     * @param rscId
     */
    @Override
    public void sendStaticResourcesEmail(String to, String subject, String content, String rscPath, String rscId) {
        MimeMessage message=mailSender.createMimeMessage();
        try {
            MimeMessageHelper helper=new MimeMessageHelper(message,true);//true表示创建一个multipart message
            helper.setFrom(from);
            helper.setTo(to);
            helper.setSubject(subject);
            helper.setText(content,true);
            //嵌入静态资源
            FileSystemResource resource=new FileSystemResource(new File(rscPath));
            helper.addInline(rscId,resource);

            //发送邮件
            mailSender.send(message);
            log.info("[嵌入静态资源邮件发送成功,当前时间]-[{}]",new Date());
        }catch (MessagingException e){
            e.printStackTrace();
        }
    }

}

测试功能

@Test
    public void test1(){
        //for(int i=0;i<=2;i++){
            emailService.sendTextEmail("邮件地址","测试","收到请回复,over!");
        //}
    }
    @Test
    public void test2(){
        String content="<html>\n" +
                "<body>\n" +
                "    <h3>hello world ! 这是一封html邮件!</h3>\n" +
                "</body>\n" +
                "</html>";
        emailService.sendHtmlEmali("邮件地址","测试",content);
    }
    @Test
    public void test3(){
        emailService.sendAttachmentsEmail("邮件地址","测试","收到请回复,over!","C:\\Users\\ad182\\Pictures\\image3\\a.jpg");
    }
    @Test
    public void test4(){
        String rscId = "neo006";
        String content="<html><body>这是有图片的邮件:<img src=\'cid:" + rscId + "\' ></body></html>";
        String imgPath = "C:\\Users\\ad182\\Pictures\\image3\\a.jpg";
        emailService.sendStaticResourcesEmail("邮件地址","测试",content,imgPath,rscId);
    }

还有一个发送邮件验证的功能

添加引擎模板

<!-- 模板引擎 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>

创建一个页面,注意:页面名称和后台参数名称要一致

<body>
        您好,这是验证邮件,请点击下面的链接完成验证,<br/>
        <a href="#" th:href="@{ https://aodeng.cc/{id}(id=${id}) }">激活账号</a>
    </body>

发送验证邮件,其实就是后台拼接一个参数到页面,将页面发个用户,用户点击页面的带参数的链接,后台接收参数,然后就实现验证的功能了

@Test
    public void test5() {
        //创建邮件正文
        org.thymeleaf.context.Context context = new org.thymeleaf.context.Context();
        context.setVariable("id", "006");
        String emailContent = templateEngine.process("emailTemplate", context);

        emailService.sendHtmlEmali("f12974049826@163.com","主题:这是模板邮件",emailContent);
    }

以上所述就是小编给大家介绍的《SpringBoot(十三):JavaMailSender邮件服务》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

成为乔布斯

成为乔布斯

[美] 布伦特·施兰德、[美] 里克·特策利 / 陶亮 / 中信出版集团 / 2016-10 / 69.00元

本书描绘了一位多姿多彩的人物将与生俱来的激情与成熟的管理方式相结合,打造出史上最有价值、最受消费者追捧的公司,这本书将彻底改变我们看待乔布斯的方式。 本书推翻了关于史蒂夫·乔布斯的传说和陈词滥调,比如他是天才和混蛋的结合体,暴躁易怒、自私自利,怠慢朋友与家人。本书揭示了这位苹果联合创始人和CEO的家庭生活与职业生涯,并回答了一个关键问题:为什么如此轻狂傲慢、以至于被赶出苹果的年轻人能成为史上......一起来看看 《成为乔布斯》 这本书的介绍吧!

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具