在Java中发送带附件的电子邮件

2023/06/01

1. 概述

在本快速教程中,我们将学习如何使用Jakarta Mail API在Java中发送带有单个和多个附件的电子邮件。

2. 项目设置

首先我们将angus-mail依赖项添加到我们的项目中:

<dependency>
    <groupId>org.eclipse.angus</groupId>
    <artifactId>angus-mail</artifactId>
    <version>2.0.1</version>
</dependency>

Angus Mail是Jakarta Mail API规范的Eclipse实现。

3. 发送带附件的邮件

首先,我们需要配置电子邮件服务提供商的凭据。然后,通过提供电子邮件主机、端口、用户名和密码来创建Session对象。所有这些详细信息均由电子邮件托管服务提供。我们可以为我们的代码使用任何伪造的SMTP测试服务器。

Session对象将作为连接工厂来处理JavaMail的配置和身份验证

现在我们有了一个Session对象,让我们进一步创建MimeMessage和MimeBodyPart对象,我们使用这些对象来创建电子邮件消息:

Message message = new MimeMessage(session); 
message.setFrom(new InternetAddress(from)); 
message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to)); 
message.setSubject("Test Mail Subject"); 

BodyPart messageBodyPart = new MimeBodyPart(); 
messageBodyPart.setText("Mail Body");

在上面的代码片段中,我们创建了MimeMessage对象,其中包含所需的详细信息,例如发件人、收件人和主题。然后,我们有一个带有电子邮件正文的MimeBodyPart对象。

现在,我们需要创建另一个MimeBodyPart以在我们的邮件中添加附件:

MimeBodyPart attachmentPart = new MimeBodyPart();
attachmentPart.attachFile(new File("path/to/file"));

对于一个邮件会话,我们现在有两个MimeBodyPart对象。所以我们需要创建一个MimeMultipart对象,然后将两个MimeBodyPart对象添加到其中:

Multipart multipart = new MimeMultipart();
multipart.addBodyPart(messageBodyPart);
multipart.addBodyPart(attachmentPart);

最后,将MimeMultiPart添加到MimeMessage对象作为我们的邮件内容,并调用Transport.send()方法发送消息:

message.setContent(multipart);
Transport.send(message);

总而言之,Message包含MimeMultiPart,MimeMultiPart进一步包含多个MimeBodyPart(s)。这就是我们组装完整电子邮件的方式。

此外,要发送多个附件,你只需添加另一个MimeBodyPart即可

4. 总结

在本教程中,我们学习了如何使用Java发送带有单个和多个附件的电子邮件。

与往常一样,本教程的完整源代码可在GitHub上获得。

Show Disqus Comments

Post Directory

扫码关注公众号:Taketoday
发送 290992
即可立即永久解锁本站全部文章