Java 邮件发送添加图片教程

简介

在 Java 开发中,我们经常需要发送邮件。有时候,我们需要在邮件中添加图片,以丰富邮件内容。本文将教会你如何使用 Java 发送带有图片的邮件。

整体流程

下面是整个流程的简要概述:

flowchart TD
    A[创建一个包含图片的邮件] -->B[发送邮件]

详细步骤

创建一个包含图片的邮件

  1. 导入必要的包:
import java.util.Properties;
import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
  1. 设置邮件发送的属性:
Properties props = new Properties();
props.put("mail.smtp.host", "smtp.example.com"); // SMTP 服务器地址
props.put("mail.smtp.port", "587"); // SMTP 服务器端口
props.put("mail.smtp.auth", "true"); // 启用身份验证
props.put("mail.smtp.starttls.enable", "true"); // 启用 STARTTLS
props.put("mail.smtp.ssl.trust", "smtp.example.com"); // 信任 SMTP 服务器的证书
  1. 创建一个 Authenticator 对象,用于身份验证:
Authenticator authenticator = new Authenticator() {
    protected PasswordAuthentication getPasswordAuthentication() {
        return new PasswordAuthentication("your-email@example.com", "your-password"); // 邮箱和密码
    }
};
  1. 创建一个 Session 对象,用于与 SMTP 服务器进行通信:
Session session = Session.getInstance(props, authenticator);
  1. 创建一个 MimeMessage 对象,用于构建邮件内容:
MimeMessage message = new MimeMessage(session);
  1. 设置邮件的发送者和接收者:
message.setFrom(new InternetAddress("your-email@example.com")); // 发件人地址
message.setRecipient(Message.RecipientType.TO, new InternetAddress("recipient@example.com")); // 收件人地址
  1. 设置邮件的主题:
message.setSubject("邮件主题");
  1. 创建一个 Multipart 对象,用于组合邮件的各个部分:
Multipart multipart = new MimeMultipart();
  1. 创建一个 MimeBodyPart 对象,用于存储文本内容:
MimeBodyPart textPart = new MimeBodyPart();
textPart.setText("邮件正文");
multipart.addBodyPart(textPart);
  1. 创建一个 MimeBodyPart 对象,用于存储图片内容:
MimeBodyPart imagePart = new MimeBodyPart();
imagePart.attachFile("path/to/image.jpg"); // 图片的路径
multipart.addBodyPart(imagePart);
  1. 将 Multipart 对象设置为邮件的内容:
message.setContent(multipart);

发送邮件

  1. 使用 Transport 类的静态方法 send() 发送邮件:
Transport.send(message);

代码注释

下面是上述代码块中的代码的详细注释:

// 导入必要的包
import java.util.Properties;
import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;

// 设置邮件发送的属性
Properties props = new Properties();
props.put("mail.smtp.host", "smtp.example.com"); // 设置 SMTP 服务器地址
props.put("mail.smtp.port", "587"); // 设置 SMTP 服务器端口
props.put("mail.smtp.auth", "true"); // 启用身份验证
props.put("mail.smtp.starttls.enable", "true"); // 启用 STARTTLS
props.put("mail.smtp.ssl.trust", "smtp.example.com"); // 信任 SMTP 服务器的证书

// 创建一个 Authenticator 对象,用于身份验证
Authenticator authenticator = new Authenticator() {
    protected PasswordAuthentication getPasswordAuthentication() {
        return new PasswordAuthentication("your-email@example.com", "your-password"); // 邮箱和密码
    }
};

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

// 创建一个 MimeMessage 对象,用于构建邮件内容