gpt4 book ai didi

java - 将图片附加到使用 java 邮件 API 发送的电子邮件

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:06:42 24 4
gpt4 key购买 nike

我有一个方法可以使用 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();

}

最佳答案

  1. 对于附件,您需要创建单独的MimeBodyPart,这里是示例代码,

    MimeBodyPart attachmentPart = new MimeBodyPart();
    FileDataSource fileDataSource = new FileDataSource(filename) {
    @Override
    public String getContentType() {
    return "application/octet-stream";
    }
    };
    attachmentPart.setDataHandler(new DataHandler(fileDataSource));
  2. 对于邮件文本,您需要另一个 MimeBodyPart

    MimeBodyPart messagePart = new MimeBodyPart();
    messagePart.setText(bodyText);
  3. 将这两个MimeBodyPart组合成Multipart

    Multipart multipart = new MimeMultipart();
    multipart.addBodyPart(messagePart);
    multipart.addBodyPart(attachmentPart);
  4. 最后,发送邮件

     ...........
    final MimeMessage msg = new MimeMessage(session);
    msg.setContent(multipart);
    Transport.send(msg);

有关详细信息,请参阅此 link .

关于java - 将图片附加到使用 java 邮件 API 发送的电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20527539/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com