cuốn sách gpt4 ai đã làm

Thư Java - Tệp đính kèm và hình ảnh nội tuyến

In lại Tác giả: Taklimakan 更新时间:2023-11-03 05:26:47 31 4
mua khóa gpt4 Nike

今天早上我已经解决了一个问题: Java Mail, sending multiple attachments not working

这次我遇到了一个稍微复杂一点的问题:我想将附件和图片结合起来。

import java.io.IOException;
import java.util.Properties;

nhập javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.Message;
import javax.mail.MessagingException;
nhập javax.mail.Session;
nhập javax.mail.Transport;
import javax.mail.internet.AddressException;
nhập javax.mail.internet.InternetAddress;
nhập javax.mail.internet.MimeBodyPart;
nhập javax.mail.internet.MimeMessage;
nhập javax.mail.internet.MimeMultipart;

public class MailTest
{

public static void main(String[] args) throws AddressException, MessagingException, IOException
{
String host = "***";
String from = "***";
String to = "***";

// Lấy thuộc tính hệ thống
Properties props = System.getProperties();

// Thiết lập máy chủ thư
props.put("mail.smtp.host", host);

// Get session
Session session = Session.getDefaultInstance(props, null);

// Define message
Tin nhắn MimeMessage = MimeMessage mới (phiên);
message.setFrom(địa chỉ Internet mới(từ));
message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));
message.setSubject("Hello JavaMail");

// Handle attachment 1
MimeBodyPart messageBodyPart1 = new MimeBodyPart();
messageBodyPart1.attachFile("c:/Temp/a.txt");

// Handle attachment 2
MimeBodyPart messageBodyPart2 = new MimeBodyPart();
messageBodyPart2.attachFile("c:/Temp/b.txt");

FileDataSource fileDs = new FileDataSource("c:/Temp/gti.jpeg");
MimeBodyPart imageBodypart = new MimeBodyPart();
imageBodypart.setDataHandler(new DataHandler(fileDs));
imageBodypart.setHeader("Content-ID", "");
imageBodypart.setDisposition(MimeBodyPart.INLINE);

// Handle text
String body = "Elotte\UtanaXem sitemap của VNExpress ";

MimeBodyPart textPart = new MimeBodyPart();
textPart.setHeader("Content-Type", "text/plain; charset=\"utf-8\"");
textPart.setContent(body, "text/html; charset=utf-8");

MimeMultipart multipart = new MimeMultipart("mixed");

multipart.addBodyPart(textPart);
multipart.addBodyPart(imageBodypart);
multipart.addBodyPart(messageBodyPart1);
multipart.addBodyPart(messageBodyPart2);

message.setContent(multipart);

// Gửi tin nhắn
Transport.send(tin nhắn);
}
}

当我在 Gmail 中打开电子邮件时一切正常:我有两个附件,并且图像显示在邮件的内容中(在 img 标签中)。

问题出在 Thunderbird 和 RoundCubic webmail 上:每个显示的图像都丢失了,并将其作为附件显示在底部。

我怎样才能让它工作?

câu trả lời hay nhất

sử dụng org.apache.commons.mail library 中的 ImageHtmlEmail 也很方便. (更新:它仅包含在 1.3 的快照中)例如:

  HtmlEmail email = new ImageHtmlEmail();
email.setHostName("mail.myserver.com");
email.addTo("jdoe@somewhere.org", "John Doe");
email.setFrom("me@apache.org", "Me");
email.setSubject("Test email with inline image");

// embed the image and get the content id
URL url = new URL("../../../images/asf_logo_wide.gif");
String cid = email.embed(url, "Apache logo");

// set the html message
email.setHtmlMsg(htmlEmailTemplate, new File("").toURI().toURL(), false);

关于Java 邮件 - 附件和内联图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8973026/

31 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress