Создание и сохранение файлов MSG

Aspose.Email поддерживает создание файлов сообщений Outlook (MSG). В этой статье объясняется, как:

  • Создать сообщения MSG.
  • Создать сообщения MSG с вложениями.
  • Создать сообщение MSG с телом в формате RTF.
  • Сохранить сообщение как черновик.
  • Работать с сжатием тела.

Создание и сохранение сообщений Outlook

Класс MailMessage имеет метод Save(), который может сохранять файлы Outlook MSG на диск или в поток. Приведенные ниже фрагменты кода создают экземпляр класса MailMessage, устанавливают такие свойства, как from, to, subject и body. Метод Save() принимает имя файла в качестве аргумента. Кроме того, сообщения Outlook можно создавать с сжатым телом RTF, используя MapiConversionOptions. Для настройки создайте новое оконное приложение и добавьте ссылку на библиотеку Aspose.Email в проект.

  1. Создайте новый экземпляр класса MailMessage и задайте свойства From, To, Subject и Body.
  2. Вызовите метод FromMailMessage класса MailMessage, который принимает объект типа MailMessage. Метод FromMailMessage() конвертирует MailMessage в MailMessage (MSG).
  3. Вызовите метод MapiMessage.Save() для сохранения файла MSG.

Напишите следующий код в событии нажатия кнопки управления оконным приложением.

For complete examples and data files, please go to https://github.com/aspose-email/aspose-email-python-dotnet
eml = MailMessage()
# Set from, to, subject and body properties
eml.from_address = "sender@domain.com";
eml.to.append("receiver@domain.com");
eml.subject = "This is test message";
eml.body = "This is test body";
# Create an instance of the MapiMessage class and pass MailMessage as argument
outlookMsg = MapiMessage.from_mail_message(eml);
# Save the message (MSG) file
strMsgFile = "CreatingAndSavingOutlookMessages_out.msg"
outlookMsg.save(dataDir + strMsgFile);

Создание файлов MSG с вложениями

В приведенном выше примере мы создали простой файл MSG. Aspose.Email также поддерживает сохранение файлов сообщений с вложениями. Все, что вам нужно сделать, это добавить вложения к экземпляру MailMessage. Добавьте вложения, вызвав метод Add() у коллекции MailMessage.Attachments. Добавьте список на форму, созданную выше, и добавьте две кнопки, по одной для добавления и удаления вложений. Приложение, которое добавляет вложения, работает следующим образом:

  1. Когда нажата кнопка Добавить вложение, отображается Диалоговое окно открытия файла, чтобы помочь пользователям просмотреть и выбрать вложение.
  2. Когда файл выбран, полный путь добавляется в список.
  3. Когда файл MSG создан, пути к вложениям извлекаются из списка и добавляются в коллекцию MailMessage.Attachments.

Напишите следующий код в событии нажатия кнопки Добавить вложение.

For complete examples and data files, please go to https://github.com/aspose-email/aspose-email-python-dotnet
eml = MailMessage()
# Set from, to, subject and body properties
eml.from_address = "sender@domain.com";
eml.to.append("receiver@domain.com");
eml.subject = "This is test message";
eml.body = "This is test body";
#Add attachments to MailMessage
eml.add_attachment(Attachment(dataDir + "1.jpg"))
eml.add_attachment(Attachment(dataDir + "1.doc"))
eml.add_attachment(Attachment(dataDir + "1.pdf"))
# Create an instance of the MapiMessage class and pass MailMessage as argument
outlookMsg = MapiMessage.from_mail_message(eml);
# Save the message (MSG) file
strMsgFile = "AddingMSGAttachments_out.msg"
outlookMsg.save(dataDir + strMsgFile);

Добавьте код для добавления вложений в экземпляр MailMessage. Финальный код функции Write Msg записан ниже.

For complete examples and data files, please go to https://github.com/aspose-email/aspose-email-python-dotnet
eml = MailMessage()
# Set from, to, subject and body properties
eml.from_address = "sender@domain.com";
eml.to.append("receiver@domain.com");
eml.subject = "This is test message";
eml.body = "This is test body";
#Add attachments to MailMessage
eml.add_attachment(Attachment(dataDir + "1.jpg"))
eml.add_attachment(Attachment(dataDir + "1.doc"))
eml.add_attachment(Attachment(dataDir + "1.pdf"))
# Create an instance of the MapiMessage class and pass MailMessage as argument
outlookMsg = MapiMessage.from_mail_message(eml);
# Save the message (MSG) file
strMsgFile = "AddingMSGAttachments_out.msg"
outlookMsg.save(dataDir + strMsgFile);

Создание файлов MSG с телом в формате RTF

Вы также можете создать файлы сообщений Outlook (MSG) с телами в формате Rich Text (RTF) с помощью Aspose.Email. Тело в формате RTF поддерживает форматирование текста. Создайте его, установив свойство MailMessage.HtmlBody. Когда вы конвертируете экземпляр MailMessage в экземпляр MailMessage, HTML-тело преобразуется в RTF. Таким образом, форматирование тела электронной почты сохраняется.

Следующий пример создает файл MSG с телом в формате RTF. В заголовке применено жирное и подчеркивание форматирование в HTML-теле. Это форматирование сохраняется при конвертации HTML в RTF.

For complete examples and data files, please go to https://github.com/aspose-email/aspose-email-python-dotnet
eml = MailMessage()
eml.is_draft = True
# Create an instance of the MapiMessage class and pass MailMessage as argument
outlookMsg = MapiMessage.from_mail_message(eml)
# Set RTF Body
outlookMsg.body_rtf = "{\\rtf1\\ansi\\ansicpg1252\\deff0\\deflang1033{\\fonttbl{\\f0\\fnil\\fcharset0 Calibri;}}\r\n{\\*\\generator Msftedit 5.41.21.2510;}\\viewkind4\\uc1\\pard\\sa200\\sl276\\slmult1\\lang9\\f0\\fs22 This is RTF Body with this \\b bold \\b0 text.\\par\r\n}\r\n\0"
# Save the message (MSG) file
strMsgFile = "CreatingMSGFilesWithRtfBody_out.msg"
outlookMsg.save(dataDir + strMsgFile);

Сохранение сообщения в черновом статусе

Электронные письма сохраняются как черновики, когда кто-то начал редактировать их, но хочет вернуться к ним позже, чтобы завершить их. Aspose.Email поддерживает сохранение электронного письма в статусе черновика, устанавливая флаг сообщения. Ниже приведен пример кода для сохранения электронного письма Outlook (MSG) как черновика.

For complete examples and data files, please go to https://github.com/aspose-email/aspose-email-python-dotnet
# Create an instance of the MapiMessage class
outlookMsg = MapiMessage()
# Set Message Body
outlookMsg.body = "Message created with MapiMessage in draft mode."
#Set the Unsent flag
outlookMsg.set_message_flags(MapiMessageFlags.UNSENT)
# Save the message (MSG) file
strMsgFile = "SavingMessageInDraftStatus_out.msg"
outlookMsg.save(dataDir + strMsgFile);

Последствия сжатия тела

Метод сжатия RTF тела можно использовать для генерации файлов MSG меньшего размера. Однако это приводит к снижению скорости. Для создания сообщений с улучшенной скоростью установите флаг в значение false. Этот флаг, в свою очередь, влияет на созданные PST: меньшие файлы MSG приводят к меньшим PST, а большие файлы MSG возвращают более медленное создание PST.

For complete examples and data files, please go to https://github.com/aspose-email/aspose-email-python-dotnet
eml = MailMessage.load("CreatingAndSavingOutlookMessages_out.msg");
options = MapiConversionOptions()
options.use_body_compression = True
ae_mapi = MapiMessage.from_mail_message(eml, options);