码迷,mamicode.com
首页 > 编程语言 > 详细

使用javax.mail包下的类实现发送邮件工具类

时间:2019-08-20 22:23:02      阅读:123      评论:0      收藏:0      [点我收藏+]

标签:java   成功   div   http   add   set   sem   package   默认   

IDEA 依赖:

<dependency>
            <groupId>javax.mail</groupId>
            <artifactId>mail</artifactId>
            <version>1.4.7</version>
</dependency>

模板实体类:

package springbootdemo.demo.entity;

/**
 * @author
 * @date 2019/8/19 21:58
 */
public class MailTemplate {
    //模板标题
    private String mailTitle;
    //模板内容
    private String mailContent;

    public String getMailTitle() {
        return mailTitle;
    }

    public void setMailTitle(String mailTitle) {
        this.mailTitle = mailTitle;
    }

    public String getMailContent() {
        return mailContent;
    }

    public void setMailContent(String mailContent) {
        this.mailContent = mailContent;
    }
}

邮件配置类:

  1 package springbootdemo.demo.entity;
  2 
  3 /**
  4  * @author
  5  * @date 2019/8/19 21:26
  6  */
  7 public class Email {
  8     //发送邮箱
  9     private String mailUser;
 10     //认证用户
 11     private String agreedUser;
 12     //认证密码,授权码(不是登录密码)
 13     private String agreedPwd;
 14     //端口号
 15     private String port;
 16     //邮箱服务/主机(163邮箱的是smtp协议的:smtp.163.com)
 17     private String host;
 18     //接收邮箱
 19     private String receiverUser;
 20     //发送协议smtp,
 21     private String protocol;
 22     //自定义发送名称
 23     private String mailUserName;
 24     //是否开启ssl验证
 25     private String ssl;
 26     //是否开启tls
 27     private String starttls;
 28     //是否同时开启了认证
 29     private String auth;
 30 
 31     public String getMailUser() {
 32         return mailUser;
 33     }
 34 
 35     public void setMailUser(String mailUser) {
 36         this.mailUser = mailUser;
 37     }
 38 
 39     public String getAgreedUser() {
 40         return agreedUser;
 41     }
 42 
 43     public void setAgreedUser(String agreedUser) {
 44         this.agreedUser = agreedUser;
 45     }
 46 
 47     public String getAgreedPwd() {
 48         return agreedPwd;
 49     }
 50 
 51     public void setAgreedPwd(String agreedPwd) {
 52         this.agreedPwd = agreedPwd;
 53     }
 54 
 55     public String getPort() {
 56         return port;
 57     }
 58 
 59     public void setPort(String port) {
 60         this.port = port;
 61     }
 62 
 63     public String getHost() {
 64         return host;
 65     }
 66 
 67     public void setHost(String host) {
 68         this.host = host;
 69     }
 70 
 71     public String getReceiverUser() {
 72         return receiverUser;
 73     }
 74 
 75     public void setReceiverUser(String receiverUser) {
 76         this.receiverUser = receiverUser;
 77     }
 78 
 79     public String getProtocol() {
 80         return protocol;
 81     }
 82 
 83     public void setProtocol(String protocol) {
 84         this.protocol = protocol;
 85     }
 86 
 87     public String getMailUserName() {
 88         return mailUserName;
 89     }
 90 
 91     public void setMailUserName(String mailUserName) {
 92         this.mailUserName = mailUserName;
 93     }
 94 
 95     public String getSsl() {
 96         return ssl;
 97     }
 98 
 99     public void setSsl(String ssl) {
100         this.ssl = ssl;
101     }
102 
103     public String getStarttls() {
104         return starttls;
105     }
106 
107     public void setStarttls(String starttls) {
108         this.starttls =starttls;
109     }
110 
111     public String getAuth() {
112         return auth;
113     }
114 
115     public void setAuth(String auth) {
116         this.auth = auth;
117     }
118 }

发送邮件工具类:

package springbootdemo.demo.util;

import org.springframework.util.StringUtils;
import springbootdemo.demo.entity.Email;
import springbootdemo.demo.entity.MailTemplate;

import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.util.Date;
import java.util.Properties;

/**
 * @author 
 * @date 2019/8/19 18:48
 */
public class EmailUtil {

    /**
     *
     * @description: 发送邮件
     * @author: 
     * @date: 2019/8/19
     * @return:
     */
    public static boolean sendEmail(Email email, MailTemplate mailTemplate) {
        Properties properties = new Properties();
        properties.put("mail.smtp.host", email.getHost());
        properties.put("mail.smtp.ssl.enable", email.getSsl());
        properties.put("mail.smtp.auth", email.getAuth());
        properties.put("mail.transport.protocol", email.getProtocol());
        properties.put("mail.smtp.starttls.enable", email.getStarttls());
        Session session = Session.getDefaultInstance(properties);
        //设置debug,可以查看详细查看log
        session.setDebug(true);
        // 由邮件会话新建一个消息对象  ps:注意,这个session是final修饰的,只会初始化一次,相同的邮箱用户如果修改了配置,比如ssl校验,必须重启项目才可以
        MimeMessage message = new MimeMessage(session);
        try {
            /*设置发送邮箱*/
            message.setFrom(new InternetAddress(email.getMailUser()));
            //设置接收者,类型为TO
            message.setRecipients(Message.RecipientType.TO, email.getReceiverUser());
            //设置标题
            message.setSubject(mailTemplate.getMailTitle());
            //html样式
            String content ="<div><p>亲爱的"+email.getMailUserName()+":</p> <p>你有一份新通知</p> <p>"+mailTemplate.getMailContent()+"</p> </div>";
            //纯文本
            //message.setText(mailTemplate.getMailContent());
            /* html文本*/
            message.setContent(content, "text/html;charset=gbk");
            //new Date返回当前时间的对象,设置发送时间
            message.setSentDate(new Date());
            //保存发送信息
            message.saveChanges();

            //设置发送
             Transport transport = session.getTransport();
            if (StringUtils.isEmpty(email.getPort())) {
                //默认端口号为465
                transport.connect(email.getAgreedUser(), email.getAgreedPwd());
            } else {
                transport.connect(email.getHost(), Integer.valueOf(email.getPort()), email.getAgreedUser(), email.getAgreedPwd());
            }
            //发送邮箱,第二参数是接收地址
            transport.sendMessage(message, message.getAllRecipients());
            //通过流发送,记得关闭流
            transport.close();
            System.out.println("发送成功");
        } catch (MessagingException e) {
            e.printStackTrace();
        }
        return false;
    }

    public static void main(String[] args) {
        Email email=new Email();
        email.setAgreedPwd("认证密码");
        email.setAgreedUser("认证用户(一般都不用填)");
        email.setAuth("true");
        email.setHost("smtp.163.com");
        email.setMailUser("发送邮箱");
        email.setMailUserName("发送用户");
        email.setReceiverUser("接收邮箱");
        email.setPort("");
        email.setProtocol("smtp");
        email.setSsl("true");
        email.setStarttls("false");

        MailTemplate mailTemplate=new MailTemplate();
        mailTemplate.setMailTitle("发送测试");
        mailTemplate.setMailContent("发送测试试试");

        sendEmail(email,mailTemplate);
    }
}

 

另外,邮箱一定要开通认证,163邮箱为例.

技术图片

 

使用javax.mail包下的类实现发送邮件工具类

标签:java   成功   div   http   add   set   sem   package   默认   

原文地址:https://www.cnblogs.com/cyoba/p/11384696.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!