• 【Java】【32】发邮件


    功能介绍:前端填写某些信息后,提交到后台,后台保存信息到数据库,并发送一份有相关信息的邮件给管理员

    正文:

    1,Controller层

    @ResponseBody
    @RequestMapping(value = "submit", method = RequestMethod.POST)
    public Result submit(SomeInfo someInfo){   // SomeInfo:要传输的值的实体类
        Result result = new Result(); //返回值自己定义即可
        result = TheService.submit(someInfo); //保存到数据库
        if(result.isSuccess){ //保存成功,发送邮件
            Sendmail send = new Sendmail(someInfo);
            //启动线程,线程启动之后就会执行run方法来发送邮件
            send.start();
        }
        return result;
    }

    2,Sendmail类

    package com.bfweb.util;
    
    import java.util.Properties;
    import javax.mail.Message;
    import javax.mail.Session;
    import javax.mail.Transport;
    import javax.mail.internet.InternetAddress;
    import javax.mail.internet.MimeMessage;
    import javax.mail.internet.MimeUtility;
    
    import com.bfweb.view.SomeInfo;
    
    public class Sendmail extends Thread{    
        private String from = "xxxMail@test.com"; //用于给管理员发送邮件的邮箱
        private String username = "xxxMailName"; //邮箱的用户名
        private String password = "password"; //邮箱的密码
        private String host = "mail.xx.com"; //发送邮件的服务器地址,可询问运维,我是用的我们公司的
    
        private SomeInfo someInfo;
        public Sendmail(SomeInfo someInfo){
            this.someInfo = someInfo;
        }
      
        /* 重写run方法的实现,在run方法中发送邮件给指定的用户
        * @see java.lang.Thread#run()
        */
        public void run() {
          try{
              Properties prop = new Properties();
              prop.setProperty("mail.host", host);
              prop.setProperty("mail.transport.protocol", "smtp");
              prop.setProperty("mail.smtp.auth", "true");
    
              Session session = Session.getInstance(prop);
              session.setDebug(true);
              Transport ts = session.getTransport();
              ts.connect(host, username, password);
              Message message = createEmail(session,operationView);
              ts.sendMessage(message, message.getAllRecipients());
              ts.close();
          }catch (Exception e) {
              throw new RuntimeException(e);
          }
        }
    
        public Message createEmail(Session session, SomeInfo someInfo) throws Exception{
          
          MimeMessage message = new MimeMessage(session);
          message.setFrom(new InternetAddress(from));
          message.setRecipient(Message.RecipientType.TO, new InternetAddress("yyyMail@test.com")); //info@bfsuma.com
          message.setSubject(MimeUtility.encodeText("邮件提醒", MimeUtility.mimeCharset("gb2312"), null));
          
          String info = "Code : %s<br>" +
                "Name : %s<br>" +
                "Gender : %s<br>" +
                "Email: %s<br>" +
                "Admin Url : <a href='%s'>%s</a><br>";
          info = String.format(info, someInfo.getCode(), someInfo.getName(), someInfo.getGender(), someInfo.getEmail(), "https://www.baidu.com/", "点击进入后台");
          message.setContent(info,"text/html;charset=UTF-8");
          message.saveChanges();
          return message;
        }
    }

    参考博客:

    1,JavaWeb学习总结(五十二)——使用JavaMail创建邮件和发送邮件 - 孤傲苍狼 - 博客园
    https://www.cnblogs.com/xdp-gacl/p/4216311.html

    2,java程序向指定邮箱发邮件 - v_yang_guang_v的专栏 - CSDN博客
    https://blog.csdn.net/v_yang_guang_v/article/details/45001075

    3,邮件服务返回代码含义 - weixin_34256074的博客 - CSDN博客
    https://blog.csdn.net/weixin_34256074/article/details/86168513

  • 相关阅读:
    [Vue] Computed property "XXX" was assigned to but it has no setter.
    vue路由传参的三种基本方式
    ECharts大屏数据可视化展板项目 适配rem
    vue-cli3.0结合lib-flexible、px2rem实现适配,完美解决第三方ui库样式变小问题
    element-ui 实现行合并-亲测有效!
    ui自动化用Tesseract类截取和识别验证码【多测师】
    史上最全软件测试工程师常见的面试题总结(一)【多测师】
    Python操作非关系型数据库Redis【多测师】
    Java当中的重载和重写的区别【多测师】
    3道经典的Python练习题【多测师】
  • 原文地址:https://www.cnblogs.com/huashengweilong/p/11093194.html
Copyright © 2020-2023  润新知