Java Mail 如何发送包含有Image的邮件

使用Java Mail发送包含有image的邮件时,有如下两种实现方式。

1. 在邮件的正文中,使用<img>标签,使其的src属性指向到服务器上的一个image文件,如下所示。当用户查看邮件时,对于包含的图片文件,邮箱会到图片文件所在服务器上下载图片文件,并显示到邮件中。

MimeMessage message = new MimeMessage(mailSession);
message.setSubject("HTML  mail with images");
message.setFrom(new InternetAddress("me@sender.com"));
message.setContent("<h1>This is a test</h1>" 
           + "<img src=\"http://www.rgagnon.com/images/jht.gif\">", 
           "text/html");

 

2. 把image作为附件发送,之后在邮件中使用cid前缀和附件的content-id来显示图片。因为这种方式直接把图片文件作为附件发送了,使得邮件变大了。好处是,邮箱不需要再去下载图片文件显示了。

MimeMessage message = new MimeMessage(mailSession);
message.setSubject("HTML  mail with images");
message.setFrom(new InternetAddress("me@sender.com"));
message.addRecipient(Message.RecipientType.TO, new InternetAddress("you@receiver.com"));

// This HTML mail have to 2 part, the BODY and the embedded image
MimeMultipart multipart = new MimeMultipart("related");

// first part  (the html)
BodyPart messageBodyPart = new MimeBodyPart();
String htmlText = "<H1>Hello</H1><img src=\"cid:image\">";
messageBodyPart.setContent(htmlText, "text/html");

// add it
multipart.addBodyPart(messageBodyPart);
        
// second part (the image)
messageBodyPart = new MimeBodyPart();
DataSource fds = new FileDataSource("C:\\images\\jht.gif");
messageBodyPart.setDataHandler(new DataHandler(fds));
messageBodyPart.setHeader("Content-ID","<image>");

// add it
multipart.addBodyPart(messageBodyPart);

// put everything together
message.setContent(multipart); 

 

详细参见下面的文章:

Send HTML mail with images (Javamail)

 

对于邮件中的图片无法正常显示的原因分析,详细参见下面的文章:

Why don't pictures show up in the emails I send or receive?

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在 Java发送带有图片的电子邮件,可以使用 JavaMail API 和 Java Activation Framework(JAF)。 以下是一个简单的示例代码,演示如何发送带有图片的电子邮件: ```java import java.util.Properties; import javax.mail.*; import javax.mail.internet.*; public class SendEmailWithImage { public static void main(String[] args) throws Exception { // 邮件服务器的属性 Properties props = new Properties(); props.put("mail.smtp.host", "smtp.example.com"); props.put("mail.smtp.auth", "true"); // 创建一个会话 Session session = Session.getDefaultInstance(props, new Authenticator() { protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication("username", "password"); } }); // 创建邮件消息 Message message = new MimeMessage(session); message.setFrom(new InternetAddress("[email protected]")); message.setRecipients(Message.RecipientType.TO, InternetAddress.parse("[email protected]")); message.setSubject("Email with Image"); // 创建邮件正文 MimeMultipart multipart = new MimeMultipart(); BodyPart messageBodyPart = new MimeBodyPart(); messageBodyPart.setContent("This email contains an image:<br><img src=\"cid:image\">", "text/html"); multipart.addBodyPart(messageBodyPart); // 创建邮件附件 messageBodyPart = new MimeBodyPart(); DataSource fds = new FileDataSource("image.jpg"); messageBodyPart.setDataHandler(new DataHandler(fds)); messageBodyPart.setHeader("Content-ID", "<image>"); multipart.addBodyPart(messageBodyPart); // 将正文和附件添加到邮件中 message.setContent(multipart); // 发送邮件 Transport.send(message); } } ``` 在上面的示例中,邮件正文包含一个 HTML 片段,其中包含指向图片的引用。邮件附件使用 `MimeBodyPart` 创建,并将其添加到 `MimeMultipart` 中。附件的 Content-ID 设置为 "image",以便在 HTML 中引用。 请注意,您需要将示例代码中的以下内容替换为您自己的值: - `smtp.example.com` - 您的邮件服务器主机名 - `username` - 您的邮件服务器用户名 - `password` - 您的邮件服务器密码 - `[email protected]` - 发件人的电子邮件地址 - `[email protected]` - 收件人的电子邮件地址 - `image.jpg` - 包含要添加到电子邮件的图像的文件路径

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值