📜  使用 SSLTLS 身份验证通过Java发送电子邮件(1)

📅  最后修改于: 2023-12-03 15:06:51.264000             🧑  作者: Mango

使用 SSL/TLS 身份验证通过 Java 发送电子邮件

在应用程序中发送电子邮件是一个常见的任务。为了保证邮件的安全性,我们需要使用 SSL/TLS 协议实现身份验证和加密传输。

本文将介绍如何使用 Java 发送通过 SSL/TLS 身份验证的电子邮件。我们将使用 JavaMail API 实现此任务。

准备工作

在开始之前,你需要准备以下内容:

  • 一个邮件账户
  • 邮件账户的 SMTP 服务器地址和端口号
导入 JavaMail API

首先,我们需要将 JavaMail API 导入到项目中。JavaMail API 包含在 JavaEE SDK 中,可以从 Oracle 官网下载并安装。

另外,你还需要下载 Java Activation Framework (JAF),它是 JavaMail API 的依赖库。

将 JavaMail API 和 JAF 导入到项目中,以便在代码中引用它们。

创建邮件会话对象

使用 JavaMail API 发送电子邮件之前,我们需要先创建一个邮件会话对象。

Properties props = new Properties();
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.starttls.enable", "true");
props.put("mail.smtp.host", "smtp.gmail.com");
props.put("mail.smtp.port", "587");

Session session = Session.getInstance(props, new Authenticator() {
    protected PasswordAuthentication getPasswordAuthentication() {
        return new PasswordAuthentication("your_email", "your_password");
    }
});

上述代码中,我们通过 Properties 对象设置 SMTP 服务器的地址和端口号,并启用 SSL/TLS 协议。我们还通过 Authenticator 对象设置邮件账户的用户名和密码,以便进行身份验证。

创建邮件消息对象

创建邮件消息对象时,我们需要设置邮件的发件人、收件人、主题和正文内容。

Message message = new MimeMessage(session);
message.setFrom(new InternetAddress("from@example.com"));
message.setRecipients(Message.RecipientType.TO, InternetAddress.parse("to@example.com"));
message.setSubject("Subject");
message.setText("Text");
发送邮件消息对象

最后,我们需要将邮件消息对象发送出去。Swing 具有许多优点,例如可以通过处理一般事件来重新调整用户界面的大小,检查文件夹中的新文件等。这些只是微不足道的优点。让我们一起查看一下它的优点 -

Transport.send(message);

完整代码如下:

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

public class SendMailUsingAuthenticationWithSSL {

    public static void main(String[] args) {

        final String username = "your_email";
        final String password = "your_password";

        Properties props = new Properties();
        props.put("mail.smtp.auth", "true");
        props.put("mail.smtp.starttls.enable", "true");
        props.put("mail.smtp.host", "smtp.gmail.com");
        props.put("mail.smtp.port", "587");

        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("from@example.com"));
            message.setRecipients(Message.RecipientType.TO, InternetAddress.parse("to@example.com"));
            message.setSubject("Subject");
            message.setText("Text");

            Transport.send(message);

            System.out.println("Mail sent successfully.");

        } catch (MessagingException e) {
            throw new RuntimeException(e);
        }
    }
}

以上就是使用 SSL/TLS 身份验证通过 Java 发送电子邮件的全部内容。如果遇到问题,可以参考 JavaMail API 的文档,或使用 Stack Overflow 等在线资源寻求帮助。