Использование документа Microsoft Word в качестве тела сообщения и отправка электронной почты
В этой статье показано, как использовать документ Microsoft Word в качестве тела электронного письма и отправлять его получателям. Пример документа — счет‑фактура продаж из образца базы данных Northwind, экспортированный в формат Microsoft Word. Aspose.Email for Java работает с сетевыми протоколами и функциями Microsoft Outlook и не может обрабатывать документы Microsoft Word. Чтобы обойти это, образцы в этой статье используют Aspose.Words for Java для загрузки документа Word и его конвертации в формат MHTML. Aspose.Email for Java использует документ MHTML в качестве тела письма.
Использование документов Microsoft Word в качестве тела письма
Ниже приведенные примеры кода показывают, как отправить документ Word в качестве тела письма, используя Aspose.Words for Java и Aspose.Email for Java:
- Загрузите документ Microsoft Word с помощью Aspose.Word for Java Document класс.
- Сохраните его в формате MHTML.
- Загрузите документ MHTML с помощью Aspose.Email for Java MailMessage класс для установки тела письма.
- Установите другие свойства сообщения, используя различные MailMessage свойства и методы класса.
- Отправьте письмо, используя Aspose.Email for Java SMTPClient класс.
Исходный документ, счет‑фактура, экспортированный в Microsoft Word из примера Microsoft Northwind, показан ниже.

Когда сообщение отправлено и получено в Microsoft Outlook, оно выглядит как сообщение ниже.

HTML‑форматирование и изображения сохраняются как в оригинальном документе при просмотре в Outlook или веб‑почтовом клиенте, таком как Gmail или Hotmail. Ниже скриншот сообщения, открытого в Gmail в браузере Chrome.

Следующий фрагмент кода показывает, как использовать документ Microsoft Word в качестве тела сообщения и отправить электронную почту с помощью SmtpClient экземпляр класса.
// The path to the File directory
String dataDir = "data/";
// Load a Word document from disk and save it to stream as MHTML
Document wordDocument = new Document(dataDir + "Test.doc");
ByteArrayOutputStream mhtmlStream = new ByteArrayOutputStream();
wordDocument.save(mhtmlStream, SaveFormat.MHTML);
// Load the MHTML in a MailMessage object
MailMessage message = MailMessage.load(new ByteArrayInputStream(mhtmlStream.toByteArray()), new MhtmlLoadOptions());
message.setSubject("Sending Invoice in Email");
message.setFrom(new MailAddress("sender@gmail.com"));
message.setTo(MailAddressCollection.to_MailAddressCollection("recipient@gmail.com"));
// Save the message in MSG format to disk
message.save(dataDir + "WordDocAsEmailBody_out.msg", SaveOptions.getDefaultMsgUnicode());
// Send the email message
try (SmtpClient client = new SmtpClient("smtp.gmail.com", 587, "sender@gmail.com", "pwd")) {
client.setSecurityOptions(SecurityOptions.SSLExplicit);
client.send(message);
}