我有一个方法可以使用 java 发送电子邮件。我想知道如何将图片附加到电子邮件的顶部?我尝试使用 MimeMessageParts 或其他东西,但我无法让它工作?我希望能够将 BufferedImage 作为参数传递到方法中,并将其附加到顶部。任何帮助将不胜感激:)
public static void Send(final String username, final String password,
String recipientEmail, String ccEmail, String title, String message)
throws AddressException, MessagingException
{
Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
final String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory";
// Get a Properties object
Properties props = System.getProperties();
props.setProperty("mail.smtps.host", "smtp.gmail.com");
props.setProperty("mail.smtp.socketFactory.class", SSL_FACTORY);
props.setProperty("mail.smtp.socketFactory.fallback", "false");
props.setProperty("mail.smtp.port", "465");
props.setProperty("mail.smtp.socketFactory.port", "465");
props.setProperty("mail.smtps.auth", "true");
props.put("mail.smtps.quitwait", "false");
Session session = Session.getInstance(props, null);
// -- Create a new message --
final MimeMessage msg = new MimeMessage(session);
// -- Set the FROM and TO fields --
msg.setFrom(new InternetAddress(username + "@gmail.com"));
msg.setRecipients(Message.RecipientType.TO, InternetAddress.parse(recipientEmail, false));
if (ccEmail.length() > 0) {
msg.setRecipients(Message.RecipientType.CC, InternetAddress.parse(ccEmail, false));
}
msg.setSubject(title);
msg.setText(message, "utf-8");
msg.setSentDate(new Date());
SMTPTransport t = (SMTPTransport)session.getTransport("smtps");
t.connect("smtp.gmail.com", username, password);
t.sendMessage(msg, msg.getAllRecipients());
t.close();
}
最佳答案
对于附件,您需要创建单独的
MimeBodyPart
,这里是示例代码,MimeBodyPart attachmentPart = new MimeBodyPart(); FileDataSource fileDataSource = new FileDataSource(filename) { @Override public String getContentType() { return "application/octet-stream"; } }; attachmentPart.setDataHandler(new DataHandler(fileDataSource));
对于邮件文本,您需要另一个
MimeBodyPart
MimeBodyPart messagePart = new MimeBodyPart(); messagePart.setText(bodyText);
将这两个
MimeBodyPart
组合成Multipart
Multipart multipart = new MimeMultipart(); multipart.addBodyPart(messagePart); multipart.addBodyPart(attachmentPart);
最后,发送邮件
........... final MimeMessage msg = new MimeMessage(session); msg.setContent(multipart); Transport.send(msg);
有关详细信息,请参阅此 link .
关于java - 将图片附加到使用 java 邮件 API 发送的电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20527539/