📜  Java-发送电子邮件(1)

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

Java-发送电子邮件

在Java中实现发送电子邮件功能,可以通过使用JavaMail库来实现。JavaMail库是一个用于发送和接收电子邮件的Java标准扩展。这个库提供了很多上层次的API来简化电子邮件的收发过程。

  1. 添加Maven依赖
<dependency>
    <groupId>javax.mail</groupId>
    <artifactId>mail</artifactId>
    <version>1.4.7</version>
</dependency>
  1. 准备邮件相关信息

在发送电子邮件时,需要准备以下信息:

  • 发件人邮件地址
  • 发件人用户名和密码
  • 收件人邮件地址
  • SMTP服务器地址
  • SMTP服务器端口号

在准备这些信息的时候,需要注意以下信息:

  • 收件人邮件地址可以是一个或多个,多个地址之间用逗号分隔。
  • 发件人的用户名和密码是需要验证SMTP服务器的权限,只有验证通过后才能发送成功。
  • SMTP服务器一般需要认证,因此需要使用认证信息进行身份验证。
  1. 编写邮件类

编写一个邮件工具类,该类将负责设置邮件相关信息并发送邮件。

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

public class EmailUtil {

    private static final String EMAIL_SERVER = "smtp.163.com"; // SMTP服务器地址
    private static final int EMAIL_SERVER_PORT = 25; // SMTP服务器端口号
    private static final String EMAIL_USERNAME = "your_email_address"; // 发件人用户名
    private static final String EMAIL_PASSWORD = "your_email_password"; // 发件人密码

    /**
     * 发送邮件
     *
     * @param toEmail   收件人邮箱,多个邮箱地址之间以逗号分隔
     * @param subject   邮件主题
     * @param body      邮件正文
     * @throws Exception
     */
    public static void sendEmail(String toEmail, String subject, String body) throws Exception {
        // 创建邮件会话
        Properties props = System.getProperties();
        props.put("mail.smtp.host", EMAIL_SERVER);
        props.put("mail.smtp.auth", "true");
        props.put("mail.smtp.port", EMAIL_SERVER_PORT);
        Session mailSession = Session.getDefaultInstance(props, new Authenticator() {
            protected PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication(EMAIL_USERNAME, EMAIL_PASSWORD);
            }
        });

        // 创建邮件
        MimeMessage message = new MimeMessage(mailSession);
        message.setFrom(new InternetAddress(EMAIL_USERNAME));
        message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(toEmail));
        message.setSubject(subject);
        message.setContent(body, "text/html;charset=utf-8");

        // 发送邮件
        Transport.send(message);
    }
}
  1. 调用发送邮件方法

使用以下代码可以发送一封电子邮件:

// 收件人邮箱
String toEmail = "example1@example.com,example2@example.com";
// 邮件主题
String subject = "Hello World";
// 邮件正文
String body = "这是一封测试邮件";
EmailUtil.sendEmail(toEmail, subject, body);

这段代码会向example1@example.comexample2@example.com发送一封主题为Hello World,正文为这是一封测试邮件的电子邮件。

  1. 总结

在Java中实现发送电子邮件功能,可以使用JavaMail库。该库提供了简易的API,能够简化我们发送邮件的流程。此外,在发送邮件时,需要配置必要的信息,包括邮件服务器地址、用户名、密码等。在使用JavaMail库时,我们需要考虑到JavaMail兼容性问题,以及授权码的使用问题。