Java工具类-发送邮件(支持HTM)
都依凡
撰写于 2023年 04月 28 日

Java工具类-发送邮件支持HTM

1. 导入Maven坐标

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

2. 创建Java发送邮件工具类

/**
 * 发送邮件工具类
 */
public class SendEmailUtils {
    
    private String user; // 发件人称号,同邮箱地址
    private String password; // 如果是qq邮箱可以使户端授权码,或者登录密码
    private String host;    // 指定发送邮件的主机QQ为 smtp.qq.com

    public String getUser() {
        return user;
    }

    public void setUser(String user) {
        this.user = user;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getHost() {
        return host;
    }

    public void setHost(String host) {
        this.host = host;
    }

    /**
     * 创建邮件发送的对象
     *
     * @param USER     发件人称号,同邮箱地址
     * @param PASSWORD 如果是qq邮箱可以使户端授权码,或者登录密码
     * @param HOST     指定发送邮件的主机QQ为 smtp.qq.com
     */
    public SendEmailUtils(String USER, String PASSWORD, String HOST) {
        this.user = USER;
        this.password = PASSWORD;
        this.host = HOST;
    }

    /**
     * 发送邮件 支持HTML标签
     * @param toEmail 邮件接收方的邮箱
     * @param headText 邮件的头部主题信息
     * @param bodyText 邮件的主体部分实质内容
     * @return 成功返回true 失败返回false
     */
    public boolean send(String toEmail, String headText, String bodyText) {
        // 获取系统属性
        Properties properties = System.getProperties();
        // 设置邮件服务器
        properties.setProperty("mail.smtp.host", getHost());
        properties.put("mail.smtp.auth", "true");
        // 获取默认session对象
        Session session = Session.getDefaultInstance(properties, new Authenticator() {
            public PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication(getUser(), getPassword()); //发件人邮件用户名、授权码
            }
        });
        boolean success = true;
        try {
            // 创建默认的 MimeMessage 对象
            MimeMessage message = new MimeMessage(session);

            // Set From: 头部头字段
            message.setFrom(new InternetAddress(user));

            // Set To: 头部头字段
            message.addRecipient(Message.RecipientType.TO,
                    new InternetAddress(toEmail));

            // Set Subject: 头部头字段
            message.setSubject(headText);

            // 设置邮件的内容体
            message.setContent(bodyText, "text/html;charset=UTF-8");

            // 发送消息
            Transport.send(message);

        } catch (MessagingException mex) {
            success =false;
            mex.printStackTrace();
        }

        return success;

    }
}

3. 使用Java工具类

  1. QQ邮箱授权码需要在QQ邮箱中获取
  2. 别的邮箱的授权码可以百度搜索在哪里获取,一般情况下QQ使用的比较多
    public static void main(String[] args) {
        String user = "xxx@qq.com"; // 发件人称号,同邮箱地址
        String password = "邮箱授权码"; // 如果是qq邮箱可以使户端授权码,或者登录密码
        String host = "smtp.qq.com";    // 指定发送邮件的主机QQ为 smtp.qq.com
        SendEmailUtils sendEmailUtils = new SendEmailUtils(user,password,host);
        String toEmail="xxx@qq.com";
        String head="头信息";
        String body="<h1>主题信息</h1>";
        boolean send = sendEmailUtils.send(toEmail, head, body);
        System.out.println("send = " + send);
    }

Java工具类-发送邮件(支持HTM)

Java工具类-发送邮件支持HTM

1. 导入Maven坐标

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

2. 创建Java发送邮件工具类

/**
 * 发送邮件工具类
 */
public class SendEmailUtils {
    
    private String user; // 发件人称号,同邮箱地址
    private String password; // 如果是qq邮箱可以使户端授权码,或者登录密码
    private String host;    // 指定发送邮件的主机QQ为 smtp.qq.com

    public String getUser() {
        return user;
    }

    public void setUser(String user) {
        this.user = user;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getHost() {
        return host;
    }

    public void setHost(String host) {
        this.host = host;
    }

    /**
     * 创建邮件发送的对象
     *
     * @param USER     发件人称号,同邮箱地址
     * @param PASSWORD 如果是qq邮箱可以使户端授权码,或者登录密码
     * @param HOST     指定发送邮件的主机QQ为 smtp.qq.com
     */
    public SendEmailUtils(String USER, String PASSWORD, String HOST) {
        this.user = USER;
        this.password = PASSWORD;
        this.host = HOST;
    }

    /**
     * 发送邮件 支持HTML标签
     * @param toEmail 邮件接收方的邮箱
     * @param headText 邮件的头部主题信息
     * @param bodyText 邮件的主体部分实质内容
     * @return 成功返回true 失败返回false
     */
    public boolean send(String toEmail, String headText, String bodyText) {
        // 获取系统属性
        Properties properties = System.getProperties();
        // 设置邮件服务器
        properties.setProperty("mail.smtp.host", getHost());
        properties.put("mail.smtp.auth", "true");
        // 获取默认session对象
        Session session = Session.getDefaultInstance(properties, new Authenticator() {
            public PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication(getUser(), getPassword()); //发件人邮件用户名、授权码
            }
        });
        boolean success = true;
        try {
            // 创建默认的 MimeMessage 对象
            MimeMessage message = new MimeMessage(session);

            // Set From: 头部头字段
            message.setFrom(new InternetAddress(user));

            // Set To: 头部头字段
            message.addRecipient(Message.RecipientType.TO,
                    new InternetAddress(toEmail));

            // Set Subject: 头部头字段
            message.setSubject(headText);

            // 设置邮件的内容体
            message.setContent(bodyText, "text/html;charset=UTF-8");

            // 发送消息
            Transport.send(message);

        } catch (MessagingException mex) {
            success =false;
            mex.printStackTrace();
        }

        return success;

    }
}

3. 使用Java工具类

  1. QQ邮箱授权码需要在QQ邮箱中获取
  2. 别的邮箱的授权码可以百度搜索在哪里获取,一般情况下QQ使用的比较多
    public static void main(String[] args) {
        String user = "xxx@qq.com"; // 发件人称号,同邮箱地址
        String password = "邮箱授权码"; // 如果是qq邮箱可以使户端授权码,或者登录密码
        String host = "smtp.qq.com";    // 指定发送邮件的主机QQ为 smtp.qq.com
        SendEmailUtils sendEmailUtils = new SendEmailUtils(user,password,host);
        String toEmail="xxx@qq.com";
        String head="头信息";
        String body="<h1>主题信息</h1>";
        boolean send = sendEmailUtils.send(toEmail, head, body);
        System.out.println("send = " + send);
    }

版权属于:都依凡 所有,采用《知识共享署名许可协议》进行许可,转载请注明文章来源。

本文链接: http://blog.anlucky.cn/index.php/programming/java/124

赞 (2)

评论区(暂无评论)

啊哦,评论功能已关闭~