zoukankan      html  css  js  c++  java
  • 使用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;
        }
  • 相关阅读:
    awk,seq,xarg实例使用
    Docker安装yapi
    基于阿里搭载htppd访问
    锐捷结课作业
    基于centos7搭建kvm
    基于django实现简易版的图书管理系统
    python 自定义log模块
    Interesting Finds: 2008.01.13
    Interesting Finds: 2008.01.24
    Interesting Finds: 2008.01.17
  • 原文地址:https://www.cnblogs.com/xiao-fy/p/7589209.html
Copyright © 2011-2022 走看看