• 使用javaMail发送邮件


    项目中有时会遇到发送邮件的需求。

    比如: 找回密码,用户注册发送邮件点击链接激活。

    javamail的使用方式很灵活,下面就记录其中一种方式。

    主要三个步骤:

    1、创建session

    2、通过session创建message(过程中使用了MimeMessageHelper辅助构建)

    3、使用Transport.send 方法发送邮件

    //使用session创建message            
    MimeMessage mailMessage = new MimeMessage(getSession());
                
    //使用spring提供的messageHelper帮助构建message
    MimeMessageHelper messageHelper = new MimeMessageHelper(mailMessage,true,"UTF-8"); 
    messageHelper.setFrom(PropertiesAccessUtil.getString("mail.from", ""));
    
    //mailContent是自己写的存放参数的类 //从传入的参数中获取接收人 if(mailContent.getTo().isEmpty()){ return; } for(String to: mailContent.getTo()){ messageHelper.addTo(to); } //从传入的参数中获取抄送人 for(String cc : mailContent.getCc()){ messageHelper.addCc(cc); }
    //设置标题
    messageHelper.setSubject(PropertiesAccessUtil.getString(mailContent.getSendType().template+".title", "NO TITLE"));

    //通过自定义的模板+参数 构造邮件内容

    String template=PropertiesAccessUtil.getString(mailContent.getSendType().template+".content", "");
    String content
    = buildContent(template,mailContent.getParams());
    //设置邮件内容, true 表示启动HTML格式的邮件 
    messageHelper.setText(content, true);

    //发送邮件 Transport.send(mailMessage);
       public  Session getSession() {
            if(mysession ==  null){
                Properties prop = new Properties();
                try {
                    //启用SSL认证(QQ邮箱必须,其它未测试)
                    MailSSLSocketFactory sf = new MailSSLSocketFactory();
                    sf.setTrustAllHosts(true);
                    //smtp.exmail.qq.com  QQ企业邮箱
                    prop.setProperty("mail.smtp.host", getHost());
                    //465
                    prop.put("mail.smtp.port", getPort());
                    prop.setProperty("mail.transport.protocol", "smtp");
                    prop.setProperty("mail.smtp.auth", "true");
                    prop.setProperty("mail.smtp.ssl.enable", "true");
                    prop.put("mail.smtp.ssl.socketFactory", sf);
                } catch (Exception e) {
                    logger.error("<><>",e);
                }
                //使用getDefaultInstance方法获取session,第二个参数是一个认证类,里面包含了用户名和密码
                mysession = Session.getDefaultInstance(prop, new Authenticator() {
                    @Override
                    protected PasswordAuthentication getPasswordAuthentication() {
                        return new PasswordAuthentication(getUsername(),getPassword());
                    }
                });
                mysession.setDebug(true);
                
            }
            return mysession;
        }
  • 相关阅读:
    [个人]工作中的死亡陷阱
    [阮一峰]在软件开发中,一旦这些技术被取代,你的知识将变得毫无价值,因为它们大部分都是实施的细节。
    [原文 + 补充] 当你在浏览器中输入Google.com并且按下回车之后发生了什么?
    安全的知识点总结
    purge旧的ubuntu 的linux内核
    【个人】运维常识
    windows数字证书管理器
    在mobaxterm内连接deb使用lrzsz进行文件传输
    网络安全常见考试题
    linux deb系 rpm系 配置路由
  • 原文地址:https://www.cnblogs.com/xiao-fy/p/7589209.html
Copyright © 2020-2023  润新知