电子邮件发送通知功能

学习技术点------电子邮件发送功能

摘要

本次博客主要是学习如何实现电子邮件的发送,后台使用SpringBot实现

1 业务需求分析

对于电子邮件每一个人都或多或少进行过发送,但是如何实现,使用后台逻辑代码实现邮件的发送呢?

因为我自己做了张在线简历,牵扯到看我简历的人可能需要通知我,或者联系我,这里我就增加了一个留言功能,它能够将信息存储到数据库,并将留言的信息通过邮件的方式快速通知给我,是我不会错过,每一个机会.

2 后台业务逻辑实现思路

留言是前台通过表单的形式进行提交的,后台我只需要按照指定的形式进行接受,然后将该内容进行存储到Mysql数据库即可。

存储成功之后就是邮件的通知。我们可以将留言者的电话,邮箱,名字,message都发送邮件进行通知。

3 后台使用到技术

使用的是SpringBoot脚手架快速构建Spring项目;

使用SpringDataJpa完成对数据的单标操作;

使用spring-boot-starter-mail启动器依赖提供的相关工具来完成对邮件的发送

4 完成邮件发送的实现步骤

  1. 首先导入spring-boot-starter-mail启动器依赖;

    <dependency>
        <groupId>org.springframework.bootgroupId>
        <artifactId>spring-boot-starter-mailartifactId>
    dependency>
    
  2. yml配置文件中进行相关配置

     
    spring:
    # QQ邮箱配置
      mail:
        host: smtp.qq.com #发送邮件服务器
        username: *********@qq.com  #发送方邮箱地址
        password: vjpvblggstrodhdg  #POP3/SMTP服务授权码
        properties.mail.smtp.port: 465  #默认端口
        from: *********@qq.com # 邮件发送人(与上面邮箱保持一致)
        properties.mail.smtp.starttls.enable: true
        properties.mail.smtp.starttls.required: true
        properties.mail.smtp.ssl.enable: true
        default-encoding: utf-8
    #   网易系(126/163/yeah)邮箱配置
    #  mail:
    #    host: smtp.126.com #发送邮件服务器
    #    username: [email protected] #发送邮件的邮箱地址
    #    password: xxxxxxx #客户端授权码,不是邮箱密码,网易的是自己设置的
    #    properties.mail.smtp.port: 994 #465或者994
    #    from: [email protected] # 发送邮件的地址,和上面username一致
    #    可以任意
    #    properties.mail.smtp.starttls.enable: true
    #    properties.mail.smtp.starttls.required: true
    #    properties.mail.smtp.ssl.enable: true
    #    default-encoding: utf-8
    
  3. 编写业务逻辑代码进行实现

5 业务代码实现

controller层代码实现

@RequestMapping(value = "/tome")
public void saveConnect(@RequestParam Map<String, Object> map) {
    Connect connect = new Connect();
    connect.setEmail((String) map.get("email"));
    connect.setName((String) map.get("name"));
    connect.setPhone((String) map.get("phone"));
    connect.setMessage((String) map.get("message"));
    Connect result = connectToMeService.save(connect);
    //保存成功进行邮件的发送通知
    String txt =
            "留言者姓名:" + (String) map.get("name") + "\n" +
            "留言者电话:" + (String) map.get("phone") + "\n" +
            "留言者邮箱:" + (String) map.get("email") + "\n" +
            "留言者说的话:"+(String) map.get("message");
    mailSendService.sendSimpleMail("********@qq.com", "主题:留言通知", txt);
}

service层代码实现

@Service
public class MailSendService {

    // 注入SpringBootMail发送器
    @Autowired
    private JavaMailSender javaMailSender;

    //接收方邮箱
    @Value("${spring.mail.from}")
    private String from;

    // 发送简单邮件
    public void sendSimpleMail(String to, String subject, String content) {

        SimpleMailMessage simpleMailMessage = new SimpleMailMessage();
        //设置发送方
        simpleMailMessage.setFrom(from);
        //设置接收方
        simpleMailMessage.setTo(to);
        //设置邮件主题
        simpleMailMessage.setSubject(subject);
        //设置邮件发送的内容
        simpleMailMessage.setText(content);
        //发送邮件
        javaMailSender.send(simpleMailMessage);
    }


    // 发送Html邮件
    public void sendHtmlMail(String to, String subject, String content) {
        //获取MimeMessage对象
        try {
            MimeMessage message = javaMailSender.createMimeMessage();
            MimeMessageHelper messageHelper;
            messageHelper = new MimeMessageHelper(message, true);
            //邮件发送人
            messageHelper.setFrom(from);
            //邮件接收人
            messageHelper.setTo(subject);
            //邮件主题
            message.setSubject(subject);
            //邮件内容,html格式
            messageHelper.setText(content, true);
            //发送
            javaMailSender.send(message);
        } catch (MessagingException e) {
            e.printStackTrace();
        }

    }


    //发送附件邮件
    public void sendAttachmentsMail(String to, String subject, String content, String filePath) {
        MimeMessage message = javaMailSender.createMimeMessage();
        try {
            MimeMessageHelper helper = new MimeMessageHelper(message, true);
            helper.setFrom(from);
            helper.setTo(to);
            helper.setSubject(subject);
            helper.setText(content, true);

            FileSystemResource file = new FileSystemResource(new File(filePath));
            String fileName = filePath.substring(filePath.lastIndexOf(File.separator));
            helper.addAttachment(fileName, file);
            javaMailSender.send(message);

        } catch (MessagingException e) {
            e.printStackTrace();
        }
    }

}

6 总结

这里我没有写对于留言存储到数据库的集体实现

因为前端传递过来的是一个Map集合,所以我使用Map集合接收参数之后进行了对数据封装到pojo中

然后使用SpringDataJpa技术进行存储到数据库中即可。

至于SpringDataJpa技术我们需要对实体(pojo)进行相关设置(使用lombok注解推荐)

我们的dao层接口需要继承(extends)JpaRepository

你可能感兴趣的:(java,后台工具)