Java 如何用 163 邮箱发送邮件

介绍

在日常开发中,我们经常需要通过邮件来发送消息、通知、报告等。Java 提供了一种简便的方式来发送电子邮件,本文将介绍如何使用 Java 代码来通过 163 邮箱发送邮件。

准备工作

在开始之前,我们需要确保已经拥有一个 163 邮箱账号。如果没有,请先注册一个账号,并记下邮箱地址和对应的授权码。

代码示例

以下是一个简单的 Java 代码示例,用于发送邮件:

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

public class MailSender {

    public static void main(String[] args) {
        // 163 邮箱 SMTP 配置信息
        String host = "smtp.163.com";
        String username = "your_email@163.com";
        String password = "your_password";

        // 收件人地址
        String toAddress = "recipient@example.com";

        // 邮件主题
        String subject = "Java 邮件发送示例";

        // 邮件内容
        String content = "这是一封使用 Java 代码通过 163 邮箱发送的邮件示例。";

        // 创建一个 Properties 对象,用于设置 SMTP 服务器信息
        Properties props = new Properties();
        props.put("mail.smtp.host", host);
        props.put("mail.smtp.auth", "true");

        // 创建一个 Authenticator 对象,用于进行 SMTP 用户名和密码认证
        Authenticator authenticator = new Authenticator() {
            @Override
            protected PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication(username, password);
            }
        };

        // 创建一个 Session 对象,用于与 SMTP 服务器进行通信
        Session session = Session.getDefaultInstance(props, authenticator);

        try {
            // 创建一个 MimeMessage 对象
            MimeMessage message = new MimeMessage(session);
            // 设置发件人地址
            message.setFrom(new InternetAddress(username));
            // 设置收件人地址
            message.setRecipient(Message.RecipientType.TO, new InternetAddress(toAddress));
            // 设置邮件主题
            message.setSubject(subject);
            // 设置邮件内容
            message.setText(content);

            // 发送邮件
            Transport.send(message);
            System.out.println("邮件发送成功!");
        } catch (MessagingException e) {
            e.printStackTrace();
        }
    }
}

代码解析

引入依赖

在上述代码中,我们使用了 JavaMail API 来发送邮件。为了使用该 API,我们需要在项目中引入依赖。如果使用 Maven 管理项目,可以在 pom.xml 文件中添加以下依赖:

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

设置 SMTP 服务器信息

在代码中,我们首先需要设置 163 邮箱的 SMTP 服务器信息。通过创建一个 Properties 对象,并将 SMTP 服务器地址和认证信息设置为属性键值对的形式,即可完成该步骤。

// 163 邮箱 SMTP 配置信息
String host = "smtp.163.com";
String username = "your_email@163.com";
String password = "your_password";

// 创建一个 Properties 对象,用于设置 SMTP 服务器信息
Properties props = new Properties();
props.put("mail.smtp.host", host);
props.put("mail.smtp.auth", "true");

创建 Session 对象

接下来,我们需要创建一个 Session 对象,用于与 SMTP 服务器进行通信。在创建 Session 对象时,我们需要传入上一步设置好的 Properties 对象和一个 Authenticator 对象,用于进行 SMTP 用户名和密码的认证。

// 创建一个 Authenticator 对象,用于进行 SMTP 用户名和密码认证
Authenticator authenticator = new Authenticator() {
    @Override
    protected PasswordAuthentication getPasswordAuthentication() {
        return new PasswordAuthentication(username, password);
    }
};

// 创建一个 Session 对象,用于与 SMTP 服务器进行通信
Session session = Session.getDefaultInstance(props, authenticator);

构建邮件内容

在构建邮件内容时,我们需要设置发件人地址、收件人地址、邮件主题和邮件内容等信息。在代码示例中,我们使用了 MimeMessage 类来表示邮件对象,并设置相关属性。

// 创建一个 MimeMessage 对象
MimeMessage message = new MimeMessage(session);