Сервер JavaMail Exchange MimeContent

Я использую API JavaMail, и мне нужно отправить электронное письмо через сервер Exchange, а затем вставить изображение в тело электронной почты. Для этого я использую ExchangeService для подключения к серверу Exchange. Примечание. Если это SMTP, я бы прошел сеанс и аутентификатор.

Проблема, с которой я сталкиваюсь здесь, заключается в том, что я должен использовать EmailMessage для отправки почты, наконец. У меня нет возможности установить сообщение для вставки (MIMEContent) в EmailMessage и отправить его.

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», чтобы установить в нем изображение как встроенное.


person Narayanan Chandramohan    schedule 06.07.2017    source источник
comment
Похоже, вы смешиваете API из веб-служб Exchange и JavaMail. Вероятно, есть способ делать то, что вы хотите, используя только API-интерфейсы EWS, но для этого вам понадобится эксперт EWS. Возможно, вы сможете создать MIME-содержимое сообщения с помощью API-интерфейсов JavaMail, а затем использовать метод EWS EmailMessage.setMimeContent.   -  person Bill Shannon    schedule 07.07.2017


Ответы (2)


Используя Datahandler. Я думаю, что это то, что вы ищете письмо с вложением.

person Previn    schedule 06.07.2017

Попробуйте по этим строкам:

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);
person Chiranjib    schedule 06.07.2017
comment
фрагмент, которым вы поделились, подходит для SMTP-соединений. В моем сценарии я использую URL-адрес сервера Exchange - person Narayanan Chandramohan; 06.07.2017
comment
Хорошо, используйте код MimeBodyPart, которым я поделился. То, как вы создаете MimeMessage, может быть вашей реализацией. Не помогает? - person Chiranjib; 10.07.2017