JAVA发送HTML邮件示例代码

在这个示例中,我们将使用 JavaMail API 和 Maven 工程,发送一封 HTML 格式的邮件。代码中会提供注释来解释实现的每个步骤。

引入第三方依赖

我们需要在 pom.xml 文件中引入 JavaMail API 的依赖,以及其它可能用到的库。以下是 pom.xml 文件的内容。

xml复制代码<project>
    <dependencies>
        <dependency>
            <groupId>com.sun.mail</groupId>
            <artifactId>javax.mail</artifactId>
            <version>1.6.2</version>
        </dependency>
    </dependencies>
</project>

编写Java代码

首先我们需要创建一个 Java 类文件,并且导入所需的类和包。以下是完整的 Java 代码:

java复制代码import java.util.Properties;
import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

public class HtmlEmail {

    // 邮件主题
    private static final String SUBJECT = "测试邮件";

    // 收件人邮箱
    private static final String TO_EMAIL = "recipient@example.com";

    // 发件人邮箱
    private static final String FROM_EMAIL = "sender@example.com";

    // 发件人邮箱密码(注意:这里的密码指的是授权码,而非邮箱登录密码)
    private static final String PASSWORD = "password";

    // 发件人昵称
    private static final String NICKNAME = "发件人";

    // 邮件内容(HTML)
    private static final String CONTENT = "<p>这是一封测试邮件。</p>";

    public static void main(String[] args) {

        // 创建邮件发送会话
        Properties props = new Properties();
        props.put("mail.smtp.auth", "true");
        props.put("mail.smtp.host", "smtp.example.com");
        props.put("mail.smtp.port", "25");

        Session session = Session.getInstance(props, new Authenticator() {
            @Override
            protected PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication(FROM_EMAIL, PASSWORD);
            }
        });

        try {

            // 构造邮件消息
            Message message = new MimeMessage(session);
            message.setFrom(new InternetAddress(FROM_EMAIL, NICKNAME));
            message.setRecipient(Message.RecipientType.TO, new InternetAddress(TO_EMAIL));
            message.setSubject(SUBJECT);
            message.setContent(CONTENT, "text/html;charset=utf-8");

            // 发送邮件
            Transport.send(message);

            System.out.println("邮件发送成功!");

        } catch (MessagingException e) {

            System.out.println("邮件发送失败!");
            e.printStackTrace();

        } catch (UnsupportedEncodingException e) {

            System.out.println("不支持字符编码!");
            e.printStackTrace();

        }
    }
}

代码解释

在代码中,我们首先定义了邮件的主题、收件人邮箱、发件人邮箱、发件人邮箱密码、发件人昵称和邮件内容。接着,我们创建了一个 Properties 对象来存储邮件发送相关的配置信息,如 SMTP 主机、SMTP 端口号等。然后,我们使用配置信息和发件人邮箱密码来创建一个邮件发送会话。通过会话,我们可以构造一封邮件消息,并设置邮件的各种属性,如发件人、收件人、主题、内容等。最后,我们调用 Transport.send() 方法来发送邮件。

注意事项

  • 发送 HTML 格式的邮件需要在消息内容中指定 Content-Type 为 “text/html;charset=utf-8”。
  • 邮箱授权码与登录密码不同,需要在邮箱中进行设置,具体操作可参考邮箱提供商的相关帮助文档。