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

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邮箱为例.

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

时间: 2024-10-15 10:03:26

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

Collections 工具类和 Arrays 工具类常见方法

Collections 工具类和 Arrays 工具类常见方法 Collections Collections 工具类常用方法: 排序 查找,替换操作 同步控制(不推荐,需要线程安全的集合类型时请考虑使用 JUC 包下的并发集合) 排序操作 void reverse(List list)//反转 void shuffle(List list)//随机排序 void sort(List list)//按自然排序的升序排序 void sort(List list, Comparator c)//定制

黑马程序员——19,Collections工具类,Arrays工具类,高级for循环,可变参数,静态导入

------<ahref="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------- 黑马程序员--19,Collections工具类,Arrays工具类 /* Collections是一个类,注意,这里后面带有一个s 千万不要和Collection弄混了!Collection只是接口而已. 两者要区别开来. Collect

ListView add EmptyView 工具类和下载工具类

public class EmptyViewUtils {     public static View createLoadingView(Context context) {         LinearLayout linearLayout = (LinearLayout) LayoutInflater.from(context).inflate(R.layout.list_empty_loading, null);         linearLayout.setLayoutParams

JavaWeb之抓包之旅(三) :HttpClient封装工具类

谈到httpClient相信大家都不陌生,网上也有一大推别人总结的.HttpClient是Apache Jakarta Common下的子项目,用来提供高效的.最新的.功能丰富的支持HTTP协议的客户端编程工具包,并且它支持HTTP协议最新的版本和建议. 详细请参考文档:HttpClient 我们在对数据进行请求的时候经常使用. 前不久在做一个百度地图定位的(通过GPS判断你在某个学校,但是并不是每个学校地图上都有,而且如何确定范围呢?) 类似于饿了么,我一直在想它为什么能定位到具体的某个宿舍呢

java HtmlEmail发送邮件工具类

package com.sh.xrsite.common.utils; import java.io.File; import java.util.HashMap; import java.util.Locale; import java.util.Map; import java.util.regex.Matcher; import java.util.regex.Pattern; import org.apache.commons.mail.HtmlEmail; import org.spr

Scanner类、匿名对象、Random类、String类、static静态类、math类和Arrays工具类

一.Scanner类 1.除了八种基本数据类型,其他都是引用类型: 引用类型使用三步骤: 2.Scanner类 引用jdk提供的类,Scanner在java.util包下,不在java.lang包(String)下使用的都要import,查找jdk api,看构造方法创建对象,再看成员方法实现功能: 3.Scanner实现在控制台接收键盘输入的两个Int值相加 4.Scanner类比较找出三个数中最大值 二.匿名对象 1.只使用一次:因为每次new都创建新的对象,再使用时候找不到那个堆内存中的之

HttpServletResponse工具类和HttpServletRequest工具类,前台参数接收方式和后台返回(JSON)数据格式

RequestUtils.java 操作类 package cn.utils; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.web.util.UrlPathHelper; import javax.servlet.http.HttpServletRequest; import java

Android工具类之字符串工具类,提供一些字符串相关的便捷方法

/** * 字符串工具类,提供一些字符串相关的便捷方法 */ public class StringUtil { private StringUtil() { throw new AssertionError(); } /** * is null or its length is 0 or it is made by space * <p/> * <pre> * isBlank(null) = true; * isBlank("") = true; * isBl

Collections工具类和Arrays工具类

Collections 工具类 Collections类是对集合进行操作的类,他里面没有特有的成员,所有的方法都是静态的. 常用的方法 sort(List L):List集合本身对象不具备比较功能,使用了这个方法以后能够对List集合中的元素进行排序.sort()方法本身要求对象实现了Comparable sort(List<T> l ,Comparator<? super T>)或者你传递一个自定义的比较器也可以. binarySearch(List <T>l,<