Jakarta Mail TLS 发送邮件

news/2024/9/23 0:04:40

Jakarta Mail TLS 发送邮件 


 

Jakarta Mail(以前称为 JavaMail)中使用 TLS 发送邮件的方式类似于使用 JavaMail。TLS(传输层安全协议)用于加密邮件传输,以确保邮件在发送过程中不会被拦截。

以下是如何通过 Jakarta Mail 实现使用 TLS 发送邮件的步骤:

 

步骤 1:引入 Jakarta Mail 依赖

如果使用 Maven 构建项目,首先需要在 pom.xml 中添加 Jakarta Mail 的依赖:

<!-- https://mvnrepository.com/artifact/jakarta.mail/jakarta.mail-api -->
<dependency><groupId>jakarta.mail</groupId><artifactId>jakarta.mail-api</artifactId><version>2.1.3</version>
</dependency>

如果使用其他构建工具或手动管理依赖,确保添加 jakarta.mail-api 的 JAR 文件。

 

步骤 2:配置 TLS 发送邮件的 Java 代码

import jakarta.mail.*;
import jakarta.mail.internet.*;
import java.util.Properties;public class JakartaMailTLSExample {public static void sendEmail() {// 配置 SMTP 服务器信息String smtpHost = "smtp.gmail.com"; // 例如 Gmail SMTP 服务器String smtpPort = "587"; // TLS 默认端口String username = "your-email@gmail.com"; // 你的邮箱地址String password = "your-password"; // 你的邮箱密码// 设置属性Properties props = new Properties();props.put("mail.smtp.host", smtpHost); // SMTP 服务器地址props.put("mail.smtp.port", smtpPort); // SMTP 端口props.put("mail.smtp.auth", "true"); // 启用身份验证props.put("mail.smtp.starttls.enable", "true"); // 启用 TLSprops.put("mail.smtp.ssl.trust", smtpHost); // 信任的 SMTP 服务器// 创建会话Session session = Session.getInstance(props, new Authenticator() {protected PasswordAuthentication getPasswordAuthentication() {return new PasswordAuthentication(username, password);}});try {// 创建邮件Message message = new MimeMessage(session);message.setFrom(new InternetAddress("your-email@gmail.com")); // 发件人地址message.setRecipients(Message.RecipientType.TO, InternetAddress.parse("recipient-email@example.com")); // 收件人地址message.setSubject("Test Jakarta Mail TLS Email"); // 邮件主题message.setText("This is a test email sent using Jakarta Mail with TLS encryption."); // 邮件正文// 发送邮件
            Transport.send(message);System.out.println("邮件发送成功!");} catch (MessagingException e) {e.printStackTrace();}}public static void main(String[] args) {sendEmail();}
}

 

代码解释

  1. SMTP 配置
    • smtp.gmail.com 是 Gmail 的 SMTP 服务器地址,您可以根据使用的邮件服务提供商调整为相应的服务器地址。
    • 587 是启用 TLS 的端口。如果你使用 SSL,你可以改用端口 465 并相应配置 mail.smtp.ssl.enable
  2. TLS 设置
    • 通过 props.put("mail.smtp.starttls.enable", "true") 启用 TLS。
  3. 身份验证
    • 使用 Authenticator 进行邮箱的身份验证。

步骤 3:运行代码

确保正确填写邮箱地址和密码(如果使用 Gmail,建议启用应用专用密码,而不是使用您的主密码)。运行代码后,邮件将通过 TLS 加密发送。

 

总结

  • TLS 加密 是通过 mail.smtp.starttls.enable 设置来启用的,确保邮件传输过程中的数据安全性。
  • 通过 Jakarta Mail 的 API,发送邮件的过程和 JavaMail 非常类似,都是通过配置 SMTP 服务器、启用加密、设置身份验证,然后构造邮件发送。

如果需要更多的个性化设置或遇到问题,可以参考 Jakarta Mail 官方文档 了解更多详细的配置和用法。

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/63549.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

学习高校课程-软件工程-敏捷开发(ch5)

WHAT IS AGILITY 什么是敏捷性 An agile team is a nimble team able to appropriately respond to changes. Change is what software development is very much about. Changes in the software being built, changes to the team members, changes because of new technolog…

从零开始一个git操作实例,图文并茂

徒弟不懂git怎么用, 于是写了篇文章, 把本地git操作从头写了一遍, 自己去看吧!0、基本概念 •Git是一个免费、开源的、分布式版本控制系统 •它使用一个特殊的叫做仓库的数据库来记录文件的变化 •仓库中的每个文件都有一个完整的版本历史记录 1)安装 sudo apt-update sud…

Java反序列化利用链篇 | JdbcRowSetImpl利用链分析

JdbcRowSetImpl利用链 前言 首先说明一下:利用链都有自己的使用场景,要根据场景进行选择不同的利用链。 JdbcRowSetImpl利用链用于fastjson反序列化漏洞中。 为什么? 因为fastjson会在反序列化类时自动调用set开头的方法(不一定是setter方法),而JdbcRowSetImpl中存在一个…

torch.stack

看一下stack的直观解释,动词可以简单理解为:把……放成一堆、把……放成一摞。 torch.stack方法用于沿着一个新的维度 join(也可称为cat)一系列的张量(可以是2个张量或者是更多),它会插入一个新的维度,并让张量按照这个新的维度进行张量的cat操作。值得注意的是:张量序…

Java反序列化调用链分析系列 | URLDNS链

URLDNS链 URLDNS链是java通过反序列化发起dns请求的利用链。一般用于测试反序列化漏洞。 该链比较简单,利用链也比较短。 其中入口类为 HashMap,执行类为URLStreamHandler的hashCode()方法。 整个调用链如下: HashMap.readObject() HashMap.putVal() HashMap.hash()URL.hash…

控制请求并发数量:p-limit 源码解读

p-limit 是一个控制请求并发数量的库,他的整体代码不多,思路挺好的,很有学习价值; 举例 当我们同时发起多个请求时,一般是这样做的 Promise.all([requestFn1,requestFn2,requestFn3 ]).then(res =>{})或者 requestFn1() requestFn2() requestFn3()而使用 p-limit 限制并…

程序员职业发展之路思考:工程师的等级阶梯

德雷福斯模型:新手到专家 德雷福斯模型(Dreyfus model)是在 1980 年,Dreyfus 兄弟共同提出的技能习得模型。 它是一个技能习得的阶梯模型,也可以用来考察行业技术能手的分级。该模型由上而下分成:专家、精通者、胜任者、高级新手、新手五个等级,越到上面人数占比越少。新…

2024 人工智能学习内容

第六组思维导图:图形的认识