Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaMail Exchange服务器MimeContent_Java_Jakarta Mail_Exchangewebservices - Fatal编程技术网

JavaMail Exchange服务器MimeContent

JavaMail Exchange服务器MimeContent,java,jakarta-mail,exchangewebservices,Java,Jakarta Mail,Exchangewebservices,我使用的是JavaMail api,我必须通过Exchange server发送电子邮件,然后在电子邮件正文中嵌入图像。为此,我使用ExchangeService与Exchange服务器连接。注意:如果是SMTP,我将通过会话和身份验证程序 我在这里面临的挑战是,我最终必须使用EmailMessage发送邮件。我没有在EmailMessage中设置嵌入消息(MIMEContent)并发送它的选项 try{ ExchangeService service

我使用的是JavaMail api,我必须通过Exchange server发送电子邮件,然后在电子邮件正文中嵌入图像。为此,我使用ExchangeService与Exchange服务器连接。注意:如果是SMTP,我将通过会话和身份验证程序

我在这里面临的挑战是,我最终必须使用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){
}
试试看{
ExchangeService服务=新的ExchangeService(ExchangeVersion.Exchange2010_SP2);
ExchangeCredentials凭据=新的WebCredentials(用户名、密码、域);
服务。设置凭据(凭据);
setUrl(新URI(主机));
EmailMessage msg=新的EmailMessage(服务);
msg.setSubject(subject);//电子邮件主题
msg.getFrom().setAddress(from);
msg.getToRecipients().add(to);//电子邮件接收者
MimeBodyPart messageBodyPart=新的MimeBodyPart();
messageBodyPart.setContent(bodyStart,“text/html”);
//创建多个零件
MimeMultipart multipart=新的MimeMultipart();
multipart.addBodyPart(messageBodyPart);
MimeBodyPart imagePart=新的MimeBodyPart();
setHeader(“内容ID”,即“”);
setDisposition(MimeBodyPart.INLINE);
imagePart.attachFile(“C:/selenium/ma000xsspf01.png”);
multipart.addBodyPart(imagePart);
msg.send();//发送电子邮件
}捕获(例外e){
}

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

使用
数据处理程序。
我想这就是您要找的图像。

尝试以下方法:

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);
mimessage msg=新的mimessage(objSession);
MimeBodyPart imagePart=新的MimeBodyPart();
字符串origFileName=null;
origFileName=/*在此处获取文件名*/;
//设置字节内容
DataSource fds=新的ByteArrayDataSource(/*获取图像流或内容数组*/,“图像/jpeg”);
setDataHandler(新的DataHandler(fds));
//此标头将html内容连接到图像mime部分
addHeader(“内容ID”,即“”);
//使用Mime实用程序对资源进行编码后,设置资源的名称
imagePart.setFileName(MimeUtility.encodeText(origFileName,“utf-8”,null).replaceAll(“\r\n”,null));
//将处置设置为内联
setDisposition(MimeBodyPart.INLINE);
MimMultipart relatedMail=新的MimMultipart(“相关”);
relatedMail.addBodyPart(imagePart);
msg.setContent(relatedMail);

您共享的代码片段适用于SMTP连接。在我的场景中,我使用的是Exchange server URL。这很好,请使用我共享的MimeBodyPart代码。如何创建MimeMessage可能是您的实现。没有帮助吗?您似乎将来自Exchange Web服务和JavaMail的API混合在一起。可能有一种方法可以只使用EWS API实现您想要的功能,但是您需要一位EWS专家来帮助您。您可以使用JavaMail API创建消息的MIME内容,然后使用EWS
EmailMessage.setMimeContent
方法。