个人网站的搭建(四)——利用SpringBoot发送邮件

版权声明: https://blog.csdn.net/weixin_42074377/article/details/80737742

    想的越多,才知道自己不会的越多。自己的项目有一个留言的功能,就想着别人留言以后给管理员(我)发一个提示邮件,以便及时的回复消息。网站看了看才发现SpringBoot真的很厉害。我能想到的它都能实现。把自己的实现步骤整理一下:

一、开启邮箱SMTP服务

    我用的是qq邮箱,开启SMTP服务步骤如下:

    


    我这里是已经开启了,所以看不到,如果是第一次开启的话会生成一段字符,可以认为是邮箱的秘钥,这个需要记下。

二、引入依赖包

    pom.xml文件中引入jar包

<!-- 支持发送邮件 -->
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-mail</artifactId>
</dependency>

三、编辑配置文件

    网上的配置文件五花八门,我试了好几个才找到适合我这个项目的。application.yml文件中增加如下信息:

spring:
  mail:
    host: smtp.qq.com
    username: #你的邮箱地址
    password: #之前保存的秘钥
    default-encoding: UTF-8
    port: 587
    properties:
      mail:
        smtp:
          auth: true
          starttls:
            enable: true
            required: true    

四、写服务类

    

@Component
public class MailUtil {

    @Autowired
    private  JavaMailSender javaMailSender;

   
    public   void sendEmailToMe(Message message1)  {
        MimeMessage message = null;
        try {
            message = javaMailSender.createMimeMessage();
            MimeMessageHelper helper = new MimeMessageHelper(message, true);
            helper.setFrom("你的邮箱地址");
            helper.setTo("需要发送的对象的邮箱地址");
            helper.setSubject("邮件主题");
            String sb = MailUtil.toHtml2(message1);
            helper.setText(sb, true);
        } catch (MessagingException e) {
            e.printStackTrace();
        }
        javaMailSender.send(message);
    }

    public static  String toHtml2(Message message1){
        String suject = message1.getSubject();
        String name = message1.getFullname();
        String msg = message1.getMessage();
        String from = message1.getEmailaddress();
        String phone = message1.getPhonenumber();
        StringBuffer sb = new StringBuffer();
        sb.append("<h3 style='color: #d9001f'>您有新的留言:</h3>");
        sb.append("<p><strong>访客:</strong>"+name+"</p>");
        sb.append("<p><strong>留言主题:</strong>"+suject+"</p>");
        sb.append("<p><strong>他的电话:</strong>"+phone+"</p>");
        sb.append("<p><strong>他的邮箱:</strong>"+from+"</p>");
        sb.append("<p><strong>正文:</strong>"+msg+"</p>");
        return sb.toString();
    }

}
    注:这段代码只是我的项目用到的,里面的内容可以根据需要自行修改。

五、调用服务

    在需要用到邮件服务的类里面直接调用这个服务即可。我这里因为融合了之前的代码,比较凌乱。

    

    @Autowired
    private MailUtil mailUtil;


    @PostMapping("/insert")
    public RestUtil insert(HttpServletRequest request, Message message) throws Exception{
        logger.info("新的留言");
        RestUtil restUtil = new RestUtil();
        String IP = IPUtil.getIpAddr(request);
        message.setUserIp(IP);
        if (messageService.insertSelective(message) > 0) {
            restUtil.setMsg("我会尽快回复您的留言");
            restUtil.setStatus(20000);
            mailUtil.sendEmailToMe(message,IP);
            logger.info("Ip为"+IP+"的用户留言了");
            try {
                mailUtil.sendEmailToVistor(message);
            }catch (Exception e){
                System.out.println("假的邮箱");
            }

        } else {
            restUtil.setMsg("未知错误,请联系中边");
            restUtil.setStatus(20001);
            restUtil.setData(message);
        }
        return restUtil;
    }

    效果如下:




没有更多推荐了,返回首页