繁体   English   中英

JavaMail Exchange服务器MimeContent

[英]JavaMail Exchange server MimeContent

我正在使用JavaMail api,并且必须通过Exchange服务器发送电子邮件,然后将图像嵌入到电子邮件正文中。 为此,我正在使用ExchangeService与Exchange服务器建立连接。 注意:如果是SMTP,我将通过Session和Authenticator。

我在这里面临的挑战是我必须最终使用EmailMessage发送邮件。 我没有选择在EmailMessage中设置嵌入消息(MIMEContent)并发送它的选项。

try{

                    ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2010_SP2);
                    ExchangeCredentials credentials = new WebCredentials(userName, password, domain);
                    service.setCredentials(credentials);
                    service.setUrl(new URI(host));
                    EmailMessage msg = new EmailMessage(service);
                    msg.setSubject(subject); //email subject
                    msg.getFrom().setAddress(from);
                    msg.getToRecipients().add(to); //email receiver
                    MimeBodyPart messageBodyPart = new MimeBodyPart();
                    messageBodyPart.setContent(bodyStart, "text/html");

                    // creates multi-part
                    MimeMultipart multipart = new MimeMultipart();
                    multipart.addBodyPart(messageBodyPart);
                    MimeBodyPart imagePart = new MimeBodyPart();
                    imagePart.setHeader("Content-ID", "<123234325>");
                    imagePart.setDisposition(MimeBodyPart.INLINE);
                    imagePart.attachFile("C:/selenium/ma000xsspf01.png");
                    multipart.addBodyPart(imagePart);
                    msg.send(); //send email
}catch(Exception e){
}

有人请让我知道如何使用“ msg”对象将其中的图像设置为嵌入式图像。

通过使用Datahandler 。我认为这是您正在寻找带有附件的邮件的工具

尝试以下方法:

MimeMessage msg = new MimeMessage(objSession);
MimeBodyPart imagePart = new MimeBodyPart();
String origFileName = null;
origFileName = /* Get File Name here*/;

// set the byte content
DataSource fds = new ByteArrayDataSource(/*Get Image Stream or content array*/, "image/jpeg");
imagePart.setDataHandler(new DataHandler(fds));

// this header connects the html content to the image mime part
imagePart.addHeader("Content-ID", "<" + newContentId + ">");

// set the name of resource - after encoding it with Mime utility
imagePart.setFileName(MimeUtility.encodeText(origFileName, "utf-8", null).replaceAll("\r\n", ""));

// set disposition as inline
imagePart.setDisposition(MimeBodyPart.INLINE);

MimeMultipart relatedMail = new MimeMultipart("related");
relatedMail.addBodyPart(imagePart);
msg.setContent(relatedMail);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM