后端 Java发送邮件 JavaMail 模版 20241128测试可用

配置授权码

依赖

复制代码
<dependency>
    <groupId>javax.mail</groupId>
    <artifactId>javax.mail-api</artifactId>
    <version>1.5.5</version>
</dependency>
<dependency>
    <groupId>com.sun.mail</groupId>
    <artifactId>javax.mail</artifactId>
    <version>1.5.4</version>
</dependency>

工具类

复制代码
package com.dduo.dduoj.utils;

import java.util.*;
import javax.mail.*;
import javax.mail.internet.*;

import com.sun.mail.util.MailSSLSocketFactory;

/**
 * @author Dduo
 * @Title SendEmailService
 */

public class JavaMailUtils {

    // 仅供测试
    public static void main(String[] args) throws Exception {
            send_email("我是标题", "12345", "1507319255@qq.com");
    }

    /**
     * 传入的参数是 邮件地址 和 发送的内容 和 发送的标题
     *
     * @param subject 标题
     * @param text 正文内容
     * @param mail 收件人地址
     * @throws Exception
     */
    public static void send_email(String subject, String text, String mail) throws Exception {
        // 如果jdk版本太高 要加这个
        System.setProperty("java.net.preferIPv4Stack", "true");
        System.setProperty("https.protocols", "TLSv1.2");
        // 配置邮件发送的相关属性
        Properties props = new Properties();
        props.setProperty("mail.debug", "true");
        props.setProperty("mail.smtp.auth", "true");
        props.setProperty("mail.smtp.host", "smtp.qq.com");
        props.setProperty("mail.smtp.port", "465");
        props.setProperty("mail.transport.protocol", "smtp");
        props.setProperty("mail.smtp.ssl.enable", "true");
        // 设置SSL连接的工厂
        MailSSLSocketFactory msf = new MailSSLSocketFactory();
        msf.setTrustAllHosts(true);
        props.put("mail.smtp.ssl.socketFactory", msf);
        // 创建邮箱会话

        // todo 填写发发件人的QQ邮箱和授权码
        Session session = Session.getInstance(props, new javax.mail.Authenticator() {
            protected PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication("1732446549@qq.com", "mxytgpalxokeedjd");
            }
        });

        // 创建邮件消息对象
        Message message = new MimeMessage(session);
        message.setSubject(subject);
        message.setText(text);
        message.setFrom(new InternetAddress("1732446549@qq.com"));
        // 处理收件人部分,单个收件人和多个收件人的处理方式
        message.setRecipient(Message.RecipientType.TO, new InternetAddress(mail));
        // 获取邮件传输对象
        Transport transport = session.getTransport();
        transport.connect();
        // 发送邮件
        transport.sendMessage(message, message.getAllRecipients());
        // 关闭连接
        transport.close();
    }

}
相关推荐
lbb 小魔仙1 分钟前
【Python】零基础学 Python 爬虫:从原理到反爬,构建企业级爬虫系统
开发语言·爬虫·python
yong99902 分钟前
基于MATLAB的大变形悬臂梁求解程序
前端·数据库·matlab
Swift社区3 分钟前
ArkTS Web 组件里,如何通过 javaScriptProxy 让 JS 同步调用原生方法
开发语言·前端·javascript
Q741_1473 分钟前
海致星图招聘 数据库内核研发实习生 一轮笔试 总结复盘(1) 作答语言:C/C++ 链表 二叉树
开发语言·c++·经验分享·面试·笔试
施嘉伟5 分钟前
Oracle SQL Profile 固化执行计划实战说明
数据库·sql·oracle
秃了也弱了。7 分钟前
FASTJSON库:阿里出品java界json解析库,使用与踩坑记录
java·开发语言·json
_OP_CHEN7 分钟前
【从零开始的Qt开发指南】(十九)Qt 文件操作:从 I/O 设备到文件信息,一站式掌握跨平台文件处理
开发语言·c++·qt·前端开发·文件操作·gui开发·qt文件
Dr.Alex Wang9 分钟前
Google Firebase 实战教学 - Streamlit、Bucket、Firebase
数据库·python·安全·googlecloud
安全渗透Hacker21 分钟前
参数未校验导致的DOS(服务拒绝)问题典型场景
java·安全·web安全·网络安全·安全性测试
程序 代码狂人22 分钟前
SQL-速查表:NULL 相关函数对比
数据库·sql