Создание и настройка содержимого электронной почты

Создать новое электронное письмо

Aspose.Email for Java позволяет разработчикам создавать MIME‑сообщения (Multipurpose Internet Mail Extensions) с нуля. Основным классом для этой цели в API Aspose.Email for Java является MailMessage класс. Эта тема объясняет шаги, необходимые для создания электронных писем в форматах файлов EML, MSG и MTH с помощью Aspose.Email для Java.

Для создания электронного письма с нуля:

  1. Создайте экземпляр класса MailMessage.
  2. Установите тему сообщения, используя setSubject() метод.
  3. Установите тело сообщения, используя setHtmlBody() метод.
  4. Установите отправителя письма, используя setFrom() метод.
  5. Установите получателя в поле TO, используя getTo().add() метод.
  6. Установите получателя в поле CC, используя getCC().add() метод.
  7. Вызвать Save() метод для сохранения файла сообщения на диск в форматах MSG, EML и MHT.  

Указание нескольких получателей

Этот MailMessage представляет электронное сообщение. Экземпляры класса MailMessage используются для создания писем, которые передаются SMTP‑серверу с помощью SmtpClient класс. Эта тема демонстрирует, как указать более одного адреса электронной почты. Адреса можно указать с помощью класса MailMessage. Адреса, используемые в классе MailMessage, следующие:

  • To — адреса получателей указываются в поле ‘To’. Получатели в поле ‘To’ являются основной аудиторией сообщения. Может быть более одного адреса получателя.
  • Cc — CC означает «копия», «карбон‑копия» (carbon copy) или «вежливая копия» (courtesy copy) и позволяет добавить получателей, которым нужно видеть письмо, но которые не обязаны действовать по нему. Например, менеджеры или члены вашей команды, которым необходимо быть в курсе разговора. С Aspose.Email адреса CC можно указать в коде. Таким образом, автоматические письма или все письма на конкретный адрес могут копироваться соответствующим сотрудникам.
  • Bcc — скрытая копия (blind carbon copy), позволяет отправить письмо получателю, скрыв его от остальных получателей. В то время как CC виден получателям, Bcc скрыт. Предназначен для скрытых уведомлений. 

Чтобы указать несколько адресов электронной почты в письме, выполните следующие шаги:

  1. Создайте экземпляр класса MailMessage.
  2. Укажите адреса From и несколько адресов To, Cc и Bcc, используя экземпляр MailMessage.
  3. Создайте экземпляр класса SmtpClient и отправьте письмо, используя метод Send.

Пример кода ниже показывает, как можно указать несколько адресов To, CC и BCC.

Изменение адресов электронной почты на дружелюбные имена

Приведённые ниже примеры кода демонстрируют, как изменить адреса электронной почты на дружелюбные имена в письме. Дружелюбное имя — это более удобочитаемое название, чем сам адрес, например John Smith вместо js346@domain.com. При отправке письма мы можем связать дружелюбное имя с адресом в MailMessage конструктор класса.

Чтобы изменить адреса электронной почты на дружелюбные имена в письме, выполните следующие шаги:

  • Создайте экземпляр класса MailMessage и укажите адреса электронной почты в полях To и From, а также дружелюбные имена.
  • Укажите адреса Cc и Bcc вместе с дружелюбными именами, вызвав конструктор класса MailMessage в экземпляре MailMessage.
  • Создайте экземпляр класса SmtpClient и отправьте письмо, используя метод Send.

Следующий фрагмент кода показывает, как отображать имена для адресов электронной почты.

Установить тело письма

Этот MailMessage класс представляет электронное сообщение. Экземпляры класса MailMessage используются для создания писем, которые передаются SMTP‑серверу для доставки с помощью SmtpClient класс. Тело письма можно указать с помощью класса MailMessage. Тело письма можно задать используя setHtmlBody методу в MailMessage.

В дополнение к HtmlBody, у Aspose.Email есть другой метод, связанный с телом письма:

  • isBodyHtml: сообщает пользователю, является ли тело HTML или обычным текстом.

Эта тема показывает, как определить текст HTML‑тела и установить альтернативный текст.

Установка HTML‑тела

HtmlBody используется для указания HTML‑содержимого тела сообщения. HtmlBody должен быть заключён между тегами . Следующий фрагмент кода показывает, как задать HTML‑тело.

Установка альтернативного текста

Используйте AlternateView класс для указания копий электронного сообщения в разных форматах. Например, если вы отправляете сообщение в HTML, вы можете также предоставить версию в обычном тексте на случай, если некоторые получатели используют почтовые клиенты, не умеющие отображать HTML. Этот класс имеет два свойства, LinkedResources и BaseUri, которые используются для разрешения URL‑адресов в содержимом письма.

  • LinkedResources — это коллекция объектов LinkedResources. При рендеринге URL‑адреса в содержимом письма сначала сопоставляются с URL‑адресами в Content Link каждого объекта LinkedResources в коллекции LinkedResources и разрешаются.
  • BaseUri используется чтением письма для разрешения относительных URL‑адресов внутри тела, а также для разрешения относительных URL‑адресов Content Link в коллекции LinkedResources.

Следующий фрагмент кода показывает, как задать альтернативный текст.

Указание кодировки тела письма

Тип содержимого определяет формат письма: набор символов. Например, несколько распространённых наборов символов, предоставляемых в java.nio.Charset:

  • US-ASCII — 7‑битный ASCII, также известный как ISO646‑US, основной латинский блок набора Unicode.
  • ISO-8859-1 — ISO Latin Alphabet No. 1, также известный как ISO‑LATIN‑1.
  • UTF-8 — 8‑битный формат преобразования UCS.
  • UTF-16BE — 16‑битный формат преобразования UCS, порядок байтов big-endian.
  • UTF-16LE — 16‑битный формат преобразования UCS, порядок байтов little-endian.
  • UTF-16 — 16‑битный формат преобразования UCS, порядок байтов определяется необязательной меткой порядка байтов (BOM).

Aspose.Email использует BodyEncoding свойство класса MailMessage, позволяющее задать кодировку тела письма. Чтобы закодировать тело электронного сообщения, выполните следующие шаги:

  1. Создайте экземпляр класса MailMessage.
  2. Укажите отправителя, получателя и HTML‑тело письма в экземпляре MailMessage.
  3. Укажите значение свойства BodyEncoding.
  4. Создать экземпляр SmtpClient класс и отправьте письмо, используя метод Send.

Функции MailMessage

Этот MailMessage класс представляет содержимое письма. Экземпляры класса MailMessage используютcя для создания письма, которое передаётся SMTP‑серверу для доставки с помощью SmtpClient класс. Эта статья показывает, как использовать утилиты класса MailMessage для управления следующими функциями письма:

  • Дата и время — через класс MailMessage setDate метод, с помощью которого мы задаём дату и время письма.
  • Приоритет сообщенияMailPriority класс определяет уровни приоритета при отправке письма. Приоритет может быть низким, обычным или высоким. Приоритет влияет на скорость передачи и доставки.
  • Чувствительность сообщенияMailSensitivity класс определяет пять уровней чувствительности.
  • Уведомление о доставке — уведомления о доставке позволяют отправителям узнать, что их письмо доставлено во входящие получателя.

По умолчанию дата — это реальная дата отправки сообщения, а время — время отправки, как отображается в Microsoft Outlook. Однако фактическое время доставки письма добавляется самим SMTP‑сервером в заголовок письма. Например, ниже приведён типичный заголовок письма, где поле Date было установлено с помощью MailMessage.setDate.

Следующий фрагмент кода демонстрирует, как можно использовать каждую из перечисленных выше функций.

Запрос уведомления о прочтении

Приведённые ниже примеры кода показывают, как запросить уведомление о прочтении. Класс MailMessage DeliveryNotificationOptions Свойство перечисления описывает опции уведомления о доставке для электронного письма. Чтобы запросить уведомление о прочтении после отправки письма, выполните следующие шаги:

  1. Создайте экземпляр класса MailMessage.
  2. Укажите отправителя, получателя и HTML‑тело письма в экземпляре MailMessage.
  3. Укажите DeliveryNotificationOptions в других экземплярах MailMessage.
  4. Создайте экземпляр класса SmtpClient и отправьте письмо, используя метод Send.

Запросы на подтверждение чтения могут не всегда исполняться, потому что:

  • Почтовый клиент может не поддерживать эту функцию.
  • У конечного пользователя может быть отключена эта функция.
  • Конечный пользователь может решить не отправлять его.

Следующий фрагмент кода показывает, как запросить уведомление о прочтении.

Установить заголовки письма

Заголовки электронной почты соответствуют интернет-стандарту, а RFC определяют поля заголовков, включаемые в сообщения электронной почты. Заголовок письма можно задать с помощью MailMessage класс. Общие типы заголовков определены в HeaderType класс. Это sealed‑класс, который работает как обычное перечисление.

Обычно заголовок письма содержит следующие поля:

  • To: Адреса получателей могут быть указаны в поле To. Получатели, указанные в поле To, являются основной аудиторией сообщения. Можно указать более одного адреса получателя.
  • From: Это поле содержит адрес электронной почты отправителя сообщения.
  • Cc: Позволяет отправлять сообщение как "Carbon Copy" или "Courtesy Copy". То есть получатель не обязан отвечать или действовать. Обычно CC используется для уведомления руководителей.
  • Bcc: Сокращение от Blind Carbon Copy, обозначает отправку сообщения нескольким получателям так, чтобы получатели не видели полный список адресатов. Предназначено для скрытого уведомления.
  • ReplyTo: Это поле указывает, куда отправитель хочет получать ответы.
  • Subject: Заголовок, тема. Часто используется как индикатор ветки для сообщений, отвечающих или комментирующих другие сообщения.
  • Date: Этот заголовок указывает дату (и время). Обычно это дата, когда сообщение было составлено и отправлено.
  • XMailer: Информация о клиентском программном обеспечении отправителя. Пример: X-Mailer: Aspose.Email. XMailer используется почтовыми клиентами. У разных почтовых клиентов разные значения XMailer. Значение XMailer в MS Outlook — Microsoft Office Outlook, Build 11.0.5510. Получатель или программа чтения письма игнорируют его.

Обычно заголовок письма выглядит примерно так:


 Reply-To: reply@reply.com

From: sender@sender.com

To: guangzhou@guangzhoo.com

Subject: test mail

Date: 6 Mar 2006 8:2:2 +0800

X-Mailer: Aspose.Email

Чтобы настроить заголовок письма, выполните следующие шаги:

  • Создать экземпляр MailMessage класс.
  • Укажите To, From, CC, Bcc, ReplyTo, Subject, Date и XMailer, используя экземпляр класса MailMessage.
  • Создать экземпляр MimeHeader класс и укажите секретный заголовок.
  • Добавьте секретный заголовок в экземпляр MailMessage.

В приведённом ниже коде мы настроили заголовок письма.

Приведённый выше фрагмент кода создаёт заголовок письма в следующем формате. Это можно увидеть, открыв файл MsgHeaders.msg в Microsoft Outlook и просмотрев его свойства.


 Reply-To: reply@reply.com

From: sender@sender.com

To: receiver1@receiver.com

CC: receiver2@receiver.com

BCC: receiver3@receiver.com

Subject: test mail

Date: 6 Mar 2006 8:2:2 +0800

X-Mailer: Aspose.Email

secret-header: mystery

Вставить заголовок в определённое место

Этот Добавить метод коллекции HeadersCollection вставляет заголовок в конец коллекции. Однако иногда необходимо вставить заголовок в определённое место. В таком случае метод Add не поможет. Для этого используйте Insert метод коллекции HeadersCollection. Если коллекция содержит заголовки с одинаковым именем, этот заголовок будет вставлен перед другими заголовками с тем же именем. Ниже приведена сигнатура метода Insert и пример кода его использования.


 Method Signature

HeaderCollection.insert(String name, String value)

Добавление пользовательских заголовков к письму

Ниже приведённые программные примеры показывают, как задать пользовательский заголовок в сообщении электронной почты. Заголовок письма можно задать с помощью класса MailMessage. Чтобы задать пользовательский заголовок, выполните следующие шаги:

  1. Создайте экземпляр класса MailMessage.
  2. Укажите значения To, From и Subject, используя экземпляр MailMessage.
  3. Добавьте секретный заголовок в экземпляр MailMessage.
  4. Создайте экземпляр класса SmtpClient и отправьте письмо, используя метод Send.

Следующий фрагмент кода показывает, как добавить пользовательские заголовки к письму.

Подписать письма с помощью DKIM

Aspose.Email позволяет подписывать электронные письма с помощью DKIM (DomainKeys Identified Mail). Это даёт организации возможность брать на себя ответственность за сообщение, находящееся в пути (о DKIM). DKIM добавляет цифровую подпись к заголовкам сообщения электронной почты, которую могут проверять получатели. Открытый ключ отправителя позволяет получателю удостовериться, что подпись соответствует содержимому сообщения. Класс MailMessage dKIMSign метод используется для установки криптографической и сигнальной информации при подписи сообщения. Ниже приведён фрагмент кода, показывающий, как подписывать письма с помощью DKIM.

Выполнение слияния писем

Слияние писем помогает создавать и отправлять партию схожих электронных сообщений. Основное содержание писем одинаково, но контент может быть персонализирован. Обычно данные получателя (имя, фамилия, компания и т.п.) используются для персонализации письма.

|todo:image_alt_text| | :- | |Рисунок: Иллюстрация работы слияния писем|

Чтобы выполнить слияние писем с Aspose.Email, выполните следующие шаги:

  1. Создайте функцию с именем signature
  2. Создать экземпляр MailMessage класс.
  3. Укажите отправителя, получателя, тему и тело письма.
  4. Создайте подпись для конца письма.
  5. Создать экземпляр TemplateRoutine классе и передайте её MailMessage экземпляр.
  6. Возьмите подпись в TemplateRoutine экземпляр.
  7. Создать экземпляр DataTable класс.
  8. Добавьте столбцы Receipt, FirstName и LastName в качестве источников данных в класс DataTable
  9. Создать экземпляр DataRow класс
  10. Укажите адрес получателя, имя и фамилию в объекте DataRow
  11. Создать экземпляр MailMessageCollection класс
  12. Укажите TemplateRoutine и экземпляры DataTable в MailMessageCollection экземпляр.
  13. Создать экземпляр SmtpClient класс и укажите сервер, порт, имя пользователя и пароль
  14. Отправляйте письма, используя SmtpClient метод класса BulkSendAsync

Код ниже отправляет письмо одному получателю от трёх отправителей.