文档章节

崛起于Springboot2.X + Mail邮件场景(57)

木九天
 木九天
发布于 11/18 17:33
字数 786
阅读 60
收藏 5

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>

《SpringBoot2.X心法总纲》

场景:用户角度就是授权登陆注册等...开发角度就是线上的项目发现bug异常,立即给开发发送bug到邮箱,快速发现问题解决问题。

1、pom依赖

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

2、application.properties

#mail
spring.mail.host=smtp.163.com
spring.mail.port=25
spring.mail.username=cj_****ython@163.com
spring.mail.password=

3、mail配置

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.JavaMailSenderImpl;

/**
 * @Author:MuJiuTian
 * @Description: 邮件配置
 * @Date: Created in 下午3:04 2019/11/18
 */
@Configuration
@ConfigurationProperties(prefix = "spring.mail")
public class EmailConfig {
    private String host;
    private Integer port;
    private String username;
    private String password;

    @Bean
    public JavaMailSender javaMailSender() {
        JavaMailSenderImpl javaMailSender = new JavaMailSenderImpl();
        javaMailSender.setHost(host);
        javaMailSender.setPort(port);
        javaMailSender.setUsername(username);
        javaMailSender.setPassword(password);
        return javaMailSender;
    }

    public void setHost(String host) {
        this.host = host;
    }
    public void setPort(Integer port) {
        this.port = port;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public void setPassword(String password) {
        this.password = password;
    }
}

3、Service实现

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Service;

import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import java.io.File;

@Service
public class MailService {

    @Value("${spring.mail.username}")
    private String setFrom;

    @Autowired
    JavaMailSender javaMailSender;

    /**
     * 纯文本的 Email 在于构造 SimpleMailMessage 实例
     * @param setTo 收件人
     * @param mailTitle 邮件标题
     * @param mailContent 邮件内容
     */
    public void sendSimpleEmail(String setTo, String mailTitle, String mailContent) {
        // 构造Email消息
        SimpleMailMessage message = new SimpleMailMessage();
        message.setFrom(setFrom);
        message.setTo(setTo);
        message.setSubject(mailTitle);
        message.setText(mailContent);
        javaMailSender.send(message);
    }

    /**
     * 附件邮件发送
     * @param setTo 手机人地址
     * @param mailTitle 附件邮件主题
     * @param mailContent 附件邮件内容
     * @throws MessagingException
     */
    public void mimeEmail(String setTo, String mailTitle, String mailContent, File file) throws MessagingException {
        // MimeMessage 本身的 API 有些笨重,我们可以使用 MimeMessageHelper
        MimeMessage mimeMessage = javaMailSender.createMimeMessage();
        // 第二个参数是 true ,表明这个消息是 multipart类型的/
        MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage, true);
        mimeMessageHelper.setFrom(setFrom);
        mimeMessageHelper.setTo(setTo);
        mimeMessageHelper.setSubject(mailTitle);
        mimeMessageHelper.setText(mailContent);
        //添加附件,第一个参数表示添加到 Email 中附件的名称,第二个参数是图片资源
        mimeMessageHelper.addAttachment("mail.png", file);
        javaMailSender.send(mimeMessage);
    }

    /**
     * 富文本发送,这个方法里面的参数根据自己的实际情况改变
     */
    public void htmlEmail(String setTo, String mailTitle, String mailContent, File file) throws MessagingException {
        // MimeMessage 本身的 API 有些笨重,我们可以使用 MimeMessageHelper
        MimeMessage mimeMessage = javaMailSender.createMimeMessage();
        // 第二个参数是 true ,表明这个消息是 multipart类型的,第三个防止中文乱码
        MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage, true,"UTF-8");
        mimeMessageHelper.setFrom(setFrom);
        mimeMessageHelper.setTo(setTo);
        mimeMessageHelper.setSubject(mailTitle);
        StringBuilder html = new StringBuilder();
        html.append("<h1>SpirngBoot测试邮件HTML</h1>")
                .append("\"<p style='color:#F00'>"+mailContent+"</p>")
                .append("<p style='text-align:right'>右对齐</p>");
        mimeMessageHelper.setText(html.toString(), true);
        //添加附件,第一个参数表示添加到 Email 中附件的名称,第二个参数是图片资源
        mimeMessageHelper.addAttachment("boot.png", file);
        javaMailSender.send(mimeMessage);
    }
}

4、Controller测试

@Autowired
MailService mailService;

/**
 * mail 邮件发送测试
 * @param type 1:简单发送 2:附件发送 3:富文本发送
 * @throws MessagingException
 */
@GetMapping(value = "/mail")
public String mail(int type) throws MessagingException {
    String setTo = "mdxlcj@qq.com";
    String mailTitle = "邮箱个人简介";
    String mailContent = "hhh,我是邮件的主要内容";
    File file = new File("/Users/tentsuuhou/git/tssd/src/main/resources/static/images/tssd.png");
    if (type == 1){
        mailService.sendSimpleEmail(setTo, mailTitle, mailContent);
    } else if (type == 2){
        mailService.mimeEmail(setTo, mailTitle, mailContent,file);
    } else {
        mailService.htmlEmail(setTo,mailTitle,mailContent,file);
    }

    return "sci";
}

测试都成功!有疑问可以私信哈,我也不确定能不能让其他人看懂,但是代码是正确的。

 

 

© 著作权归作者所有

木九天

木九天

粉丝 218
博文 273
码字总数 203130
作品 0
海淀
程序员
私信 提问
崛起于Springboot2.X + 100秒掌握异步任务(55)

《SpringBoot2.X心法总纲》 1、应用场景 如果觉得消息队列太繁琐了,对于异步发送短信、邮件、app消息推送,等等都可以使用简单的异步来解决。 2、异步配置 Springboot启动类添加注解如下,表...

木九天
11/07
91
0
崛起于Springboot2.X + 事务管理(12)

《SpringBoot2.X心法总纲》 1、开启事务 启动类上添加注解@EnableTransactionManagement,默认开启事务,注解事务管理,等同于xml配置方式的 <tx:annotation-driven /> 接下来就可以直接在s...

木九天
2018/07/15
2.2K
2
崛起于Springboot2.X + Quartz定时调度(29)

《SpringBoot2.X心法总纲》 下面是两种方法定时任务,一个是集成quartz,另外一个是spring自带的定时任务,后者更简单一些。 该博客为入门级博客,如果想要查看企业使用Quartz场景,点击 --...

木九天
2018/07/24
4.5K
0
崛起于Springboot2.X + Activiti5.22(42)

《SpringBoot2.X心法总纲》 (本篇博客已于2019-08-28优化更新) 声明:该博客主要是Springboot1.X和Springboot2.X集成Activiti5.22版本,并说一下两个版本的搭建不同的地方 技术:Springboo...

木九天
2018/12/17
2.6K
2
崛起于Springboot2.X + 100秒jar部署(19)

《SpringBoot2.X心法总纲》 序言:和打包war方式不同,如果你看过我上一篇:SpringBoot2.X打包war,jar会更简单。 1、pom.xml确定是jar <packaging>jar</packaging> 2、IDEA右侧,点击Maven...

木九天
2018/07/18
563
0

没有更多内容

加载失败,请刷新页面

加载更多

hbase错误记录

说什么服务没启动 但是 $ jps 查看又是正常的 然后想到去看日志 $ vim logs/hbase-root-regionserver-hadoop101.log INFO信息停留在:client.ZooKeeperRegistry: ClusterId read in ZooKeep...

天空飘来五个字儿
25分钟前
5
0
类的第一个元素的CSS选择器

我有一堆元素的类名是red ,但是我似乎无法使用以下CSS规则选择class="red"的第一个元素: .red:first-child { border: 5px solid red; } <p class="red"></p> <div class="red"></div> 该选......

技术盛宴
32分钟前
4
0
如何将重复数据突出显示?

将表格中一列数据中重复的,使用特殊颜色突出显示或者使用一些符号标记出来。 例如: 一个供应商,可以邀请别的供应商加入成为联合体,报表要显示所有供应商,然后供应商最后一列显示所有联合...

泡泡糖儿
34分钟前
4
0
python将html的百分号转为对应的编码

import redef trans(x): # print(x.group()) return bytes.fromhex(x.group()[2:].decode("utf-8"))data = str("你好".encode("utf-8"))print(data)data = re.subn(b"\\\\x[0-9......

鬼上身跳不过门槛
44分钟前
4
0
如何在nohup下放置已经运行的进程?

我有一个已经运行了很长时间并且不想结束它的进程。 我怎么把它放在nohup下(也就是说,即使关闭终端,如何让它继续运行?) #1楼 假设由于某种原因, Ctrl + Z也无法正常工作,转到另一个终...

javail
47分钟前
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部