Создание и установка содержимого электронных писем
Создать новое сообщение электронной почты
Aspose.Email для Java позволяет разработчикам создавать MIME (расширения интернет-почты общего назначения) сообщения с нуля. Основной класс для этой цели в API Aspose.Email для Java — это класс MailMessage. В этой теме объясняются шаги, необходимые для создания электронных писем в форматах файлов EML, MSG и MTH с использованием Aspose.Email для Java.
Чтобы создать сообщение электронной почты с нуля:
- Создайте экземпляр класса MailMessage.
- Установите тему сообщения с помощью метода setSubject() .
- Установите тело сообщения с помощью метода setHtmlBody() .
- Установите отправителя электронной почты с помощью метода setFrom() .
- Установите получателя в поле Кому с помощью метода getTo().add() .
- Установите получателя в поле Копия с помощью метода getCC().add() .
- Вызовите метод Save() , чтобы сохранить файл сообщения на диск в форматах MSG, EML и MHT.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java | |
// The path to the resource directory. | |
String dataDir = Utils.getSharedDataDir(CreateNewEmail.class) + "email/"; | |
// Create a new instance of MailMessage class | |
MailMessage message = new MailMessage(); | |
// Set subject of the message | |
message.setSubject("New message created by Aspose.Email for Java"); | |
// Set Html body | |
message.setHtmlBody("<b>This line is in bold.</b> <br/> <br/>" + "<font color=blue>This line is in blue color</font>"); | |
// Set sender information | |
message.setFrom(new MailAddress("from@domain.com", "Sender Name", false)); | |
// Add TO recipients | |
message.getTo().addMailAddress(new MailAddress("to1@domain.com", "Recipient 1", false)); | |
message.getTo().addMailAddress(new MailAddress("to2@domain.com", "Recipient 2", false)); | |
//Add CC recipients | |
message.getCC().addMailAddress(new MailAddress("cc1@domain.com", "Recipient 3", false)); | |
message.getCC().addMailAddress(new MailAddress("cc2@domain.com", "Recipient 4", false)); | |
// Save message in EML, MSG and MHTML formats | |
message.save(dataDir + "Message_out.eml", SaveOptions.getDefaultEml()); | |
message.save(dataDir + "Message_out.msg", SaveOptions.getDefaultMsg()); | |
message.save(dataDir + "Message_out.mhtml", SaveOptions.getDefaultMhtml()); | |
//Save as OFT | |
try { | |
MsgSaveOptions options = SaveOptions.getDefaultMsgUnicode(); | |
options.setSaveAsTemplate(true); | |
message.save(dataDir + "emlToOft_out.oft", options); | |
} finally { | |
if (message != null) | |
((IDisposable) message).dispose(); | |
} |
Указание нескольких получателей
Класс MailMessage представляет собой сообщение электронной почты. Экземпляры класса MailMessage используются для формирования электронных писем, которые передаются на SMTP-сервер с помощью класса SmtpClient . В этой теме демонстрируется, как указать более один адрес электронной почты. Адреса электронной почты можно указывать с помощью класса MailMessage. Адреса электронной почты, используемые в классе MailMessage:
- Кому - адреса получателей могут быть указаны в поле «Кому». Получатели в поле «Кому» являются основной аудиторией сообщения. Может быть более одного адреса получателя.
- Копия - Копия обозначает “углеродную копию” или “вежливую копию” и позволяет вам добавлять электронных получателей, которые должны видеть электронное письмо, но не обязательно ожидается, что они предпримут какие-либо действия в ответ на него. Например, менеджеры или члены вашей команды, которые должны быть в курсе обсуждения. С помощью Aspose.Email адреса CC могут быть указаны в вашем коде. Таким образом, автоматизированные электронные письма или все письма на конкретный адрес могут быть скопированы соответствующему персоналу.
- Скрытая копия - Скритая копия позволяет отправить электронное письмо получателю, который скрыт от других получателей. В то время как CC отображается в информации о письме, которую видят основные получатели, Bcc не отображается. Это предназначено для скрытого уведомления.
Чтобы указать несколько адресов электронной почты в сообщении электронной почты, выполните следующие шаги:
- Создайте экземпляр класса MailMessage.
- Укажите отправителя и несколько адресов «Кому», «Копия» и «Скрытая копия», используя экземпляр MailMessage.
- Создайте экземпляр класса SmtpClient и отправьте электронное письмо, используя метод Send.
Пример кода ниже показывает, как можно указать несколько адресов «Кому», «Копия» и «Скрытая копия».
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java | |
// Declare message as MailMessage instance | |
// Create an Instance of MailMessage class | |
MailMessage message = new MailMessage(); | |
// Specify From address | |
message.setFrom(new MailAddress("sender@sender.com")); | |
// Specify recipients’ mail addresses | |
MailAddressCollection toList = new MailAddressCollection(); | |
toList.add("receiver1@receiver.com"); | |
toList.add("receiver2@receiver.com"); | |
toList.add("receiver3@receiver.com"); | |
message.setTo(toList); | |
// Specify CC addresses | |
MailAddressCollection ccList = new MailAddressCollection(); | |
ccList.add("CC1@receiver.com"); | |
ccList.add("CC2@receiver.com"); | |
message.setCC(ccList); | |
// Specify BCC addresses | |
MailAddressCollection bccList = new MailAddressCollection(); | |
bccList.add("Bcc1@receiver.com"); | |
bccList.add("Bcc2@receiver.com"); | |
message.setBcc(bccList); | |
// Create an instance of SmtpClient Class | |
SmtpClient client = new SmtpClient(); | |
// Specify your mailing host server, Username, Password, Port | |
client.setHost("smtp.server.com"); | |
client.setUsername("Username"); | |
client.setPassword("Password"); | |
client.setPort(25); | |
try | |
{ | |
// Client.Send will send this message | |
client.send(message); | |
// Display ‘Message Sent’, only if message sent successfully | |
System.out.println("Message sent"); | |
} | |
catch (Exception ex) | |
{ | |
ex.printStackTrace(); | |
} |
Изменение адресов электронной почты на дружелюбные имена
Программные примеры ниже демонстрируют, как изменить адреса электронной почты на дружелюбные имена в сообщении электронной почты. Дружелюбное имя — это имя, которое более удобно для восприятия, чем адрес электронной почты, например, Джон Смит вместо js346@domain.com. При отправке электронного письма мы можем ассоциировать дружелюбное имя с адресом электронной почты в конструкторе класса MailMessage .
Чтобы изменить адреса электронной почты на дружелюбные имена в сообщении электронной почты, выполните следующие шаги:
- Создайте экземпляр класса MailMessage и укажите адреса электронной почты в полях Кому и От вместе с дружелюбными именами.
- Укажите адреса электронной почты CC и Bcc вместе с дружелюбными именами, вызвав конструктор класса MailMessage в экземпляре MailMessage.
- Создайте экземпляр класса SmtpClient и отправьте электронное письмо, используя метод Send.
Следующий фрагмент кода показывает, как отобразить имена для адресов электронной почты.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java | |
MailMessage message = new MailMessage("Sender Name <sender@from.com>", "Kyle Huang <kyle@to.com>"); | |
// A To address with a friendly name can also be specified like this | |
message.getTo().addMailAddress(new MailAddress("kyle@to.com", "Kyle Huang")); | |
// Specify Cc and Bcc email address along with a friendly name | |
message.getCC().addMailAddress(new MailAddress("guangzhou@cc.com", "Guangzhou Team")); | |
message.getBcc().addMailAddress(new MailAddress("ahaq@bcc.com", "Ammad ulHaq ")); | |
// Create an instance of SmtpClient Class and Specify your mailing host server, Username, Password, Port | |
SmtpClient client = new SmtpClient(); | |
client.setHost("smtp.server.com"); | |
client.setUsername("Username"); | |
client.setPassword("Password"); | |
client.setPort(25); | |
try | |
{ | |
// Client.Send will send this message | |
client.send(message); | |
System.out.println("Message sent"); | |
} | |
catch (Exception ex) | |
{ | |
ex.printStackTrace(); | |
} |
Установить тело письма
Класс MailMessage представляет собой сообщение электронной почты. Экземпляры класса MailMessage используются для формирования электронных писем, которые передаются на SMTP-сервер для доставки с использованием класса SmtpClient . Тело письма может быть указано с использованием класса MailMessage. Тело электронного письма может быть задано с использованием метода setHtmlBody в MailMessage.
Помимо HtmlBody, Aspose.Email имеет другой метод, относящийся к телу письма:
- isBodyHtml: сообщает пользователю, является ли тело HTML или обычным текстом.
Эта тема показывает, как определить текст HTML тела и установить альтернативный текст.
Установка HTML тела
HtmlBody используется для указания HTML-содержимого тела сообщения. HtmlBody должен быть заключен между тегами . Следующий фрагмент кода показывает, как установить HTML тело.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java | |
// Declare message as MailMessage instance | |
MailMessage message = new MailMessage(); | |
// Specify HtmlBody | |
message.setHtmlBody("<html><body>This is the HTML body</body></html>"); |
Установка альтернативного текста
Используйте класс AlternateView для указания копий сообщения электронной почты в различных форматах. Например, если вы отправляете сообщение в HTML, вы также можете захотеть предоставить версию в обычном тексте на случай, если некоторые получатели используют почтовые клиенты, которые не могут отображать HTML-содержимое. Этот класс имеет два свойства: LinkedResources и BaseUri , которые используются для разрешения URL в содержимом электронной почты.
- LinkedResources — это коллекция объектов LinkedResources. При рендеринге URL в содержимом электронной почты сначала сопоставляются с URL в связи с содержимым каждого объекта LinkedResources в коллекции LinkedResources и разрешаются.
- BaseUri используется почтовым клиентом для разрешения относительных URL в теле, а также для разрешения относительных URL связи с содержимым в коллекции LinkedResources.
Следующий фрагмент кода показывает, как установить альтернативный текст.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java | |
// Declare message as MailMessage instance | |
MailMessage message = new MailMessage(); | |
// Creates AlternateView to view an email message using the content specified in the //string | |
AlternateView alternate = AlternateView.createAlternateViewFromString("Alternate Text"); | |
// Adding alternate text | |
message.getAlternateViews().addItem(alternate); |
Указание кодировки тела письма
Тип содержимого определяет формат содержимого электронной почты: набор символов. Например, несколько общих наборов символов, предоставленных в java.nio.Charset, это:
- US-ASCII - семиразрядный ASCII, также известный как ISO646-US, также известный как базовый латинский блок набора символов Unicode
- ISO-8859-1 - ISO латинский алфавит No. 1, также известный как ISO-LATIN-1
- UTF-8 - восьмиразрядный формат преобразования UCS
- UTF-16BE - шестнадцатизначный формат преобразования UCS, порядок байтов big-endian
- UTF-16LE - шестнадцатизначный формат преобразования UCS, порядок байтов little-endian
- UTF-16 - шестнадцатизначный формат преобразования UCS, порядок байтов определяется необязательной меткой порядка байтов
Aspose.Email использует свойство BodyEncoding класса MailMessage для указания кодировки тела электронной почты. Чтобы закодировать тело сообщения электронной почты, выполните следующие шаги:
- Создайте экземпляр класса MailMessage.
- Укажите отправителя, получателя и HTML тело электронной почты в экземпляре MailMessage.
- Укажите значение свойства BodyEncoding.
- Создайте экземпляр класса SmtpClient и отправьте электронное письмо с помощью метода Send.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java | |
// Declare message as MailMessage instance | |
MailMessage message = new MailMessage(); | |
// Specify From, To, HtmlBody, BodyEncoding field | |
message.setFrom(new MailAddress("sender@sender.com")); | |
message.getTo().add("receiver@receiver.com"); | |
message.setHtmlBody("<html><body>This is the Html body</body></html>"); | |
message.setBodyEncoding(Charset.forName("US-ASCII")); | |
// Create an instance of SmtpClient Class and Specify your mailing host server, Username, Password and Port | |
SmtpClient client = new SmtpClient(); | |
client.setHost("smtp.server.com"); | |
client.setUsername("Username"); | |
client.setPassword("Password"); | |
client.setPort(25); | |
try | |
{ | |
// Client.Send will send this message | |
client.send(message); | |
} | |
catch (Exception ex) | |
{ | |
ex.printStackTrace(); | |
} |
Особенности MailMessage
Класс MailMessage представляет содержимое сообщения электронной почты. Экземпляры класса MailMessage используются для формирования сообщения электронной почты, которое передается на SMTP-сервер для доставки с использованием класса SmtpClient . Эта статья демонстрирует, как использовать утилитарные функции класса MailMessage для управления следующими функциями электронной почты:
- Дата и время - через метод setDate класса MailMessage мы устанавливаем дату и время электронной почты.
- Приоритет сообщения - класс MailPriority задает уровни приоритета для отправки сообщения электронной почты. Это может быть низким, нормальным или высоким. Приоритет влияет на скорость передачи и доставку.
- Чувствительность сообщения - класс MailSensitivity задает пять уровней чувствительности.
- Уведомление о доставке - Уведомления о доставке сообщают отправителям, что электронное письмо, которое они отправили, было доставлено в почтовый ящик получателя.
По умолчанию дата — это фактическая дата, когда сообщение было отправлено, и время — это время, когда оно было отправлено, как отображается в Microsoft Outlook. Однако реальное время доставки электронной почты добавляется самим SMTP-сервером в заголовок письма. Например, ниже приведен общий заголовок письма, где поле Дата было установлено с использованием MailMessage.setDate.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-.NET | |
// Add by SMTP server in delivery emails | |
Received: from ip-123.56.99.216.dsl-cust.ca.inter.net ([216.99.56.123]) by Aspose.secureserver.net with MailEnable ESMTP; Thu, 22 Feb 2007 13:58:57 -0700 | |
// Add by SMTP server in delivery emails | |
Return-Path: <xyz@oikoscucine.it> | |
// Add by SMTP server in delivery emails | |
Received: from 195.120.225.20 (HELO mail.oikoscucine.it) | |
by aspose.com with esmtp (:1CYY+<LA*- *1WK@) | |
id Q8,/O/-.N83@7-9M | |
for abc@aspose.com; Thu, 22 Feb 2007 20:58:51 +0300 | |
From: "XYZ" <xyz@oikoscucine.it> | |
To: <abc@aspose.com> | |
Subject: For ABC | |
// Date will set the Date field, outlook will show this as | |
Date: Thu, 22 Feb 2007 20:58:51 +0300 | |
Message-ID: <01c756c4$41b554d0$6c822ecf@dishonestyinsufferably> | |
MIME-Version: 1.0 | |
Content-Type: multipart/alternative; | |
boundary="----=_NextPart_000_0006_01C7569A.58DF4CD0" | |
X-Mailer: Microsoft Office Outlook, Build 11.0.5510 | |
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1106 | |
Thread-Index: Aca6Q:=ES0M(9-=(<.<1.<Q9@QE6CD== | |
X-Read: 1 |
Ниже приведенный фрагмент кода иллюстрирует, как можно использовать каждую из обсуждаемых выше функций.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java | |
// Create a new message | |
MailMessage message = new MailMessage(); | |
message.setFrom(new MailAddress("sender@gmail.com")); | |
message.getTo().add("receiver@gmail.com"); | |
message.setSubject("Using MailMessage Features"); | |
// Specify message date | |
message.setDate(new Date()); | |
// Specify message priority | |
message.setPriority(MailPriority.High); | |
// Specify message sensitivity | |
message.setSensitivity(MailSensitivity.Normal); | |
// Specify options for delivery notifications | |
message.setDeliveryNotificationOptions(DeliveryNotificationOptions.OnSuccess); |
Запрос подтверждения прочтения
Программные примеры ниже показывают, как вы можете запросить подтверждение прочтения. Перечисление свойства DeliveryNotificationOptions класса MailMessage описывает варианты уведомления о доставке для электронной почты. Чтобы запросить подтверждение прочтения после отправки электронного письма, выполните следующие шаги:
- Создайте экземпляр класса MailMessage.
- Укажите отправителя, получателя и HTML тело для электронного письма в экземпляре MailMessage.
- Укажите DeliveryNotificationOptions в других экземплярах MailMessage.
- Создайте экземпляр класса SmtpClient и отправьте электронное письмо, используя метод Send.
Запросы на подтверждение прочтения могут не всегда выполняться, потому что:
- Почтовый клиент может не реализовывать эту функцию.
- Конечный пользователь может отключить эту функцию.
- Конечный пользователь может выбрать не отправлять его.
Следующий фрагмент кода показывает, как запросить подтверждение прочтения.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java | |
// Declare message as MailMessage instance | |
MailMessage message = new MailMessage(); | |
// Specify From, To, HtmlBody, DeliveryNotificationOptions field | |
message.setFrom(new MailAddress("sender@sender.com")); | |
message.getTo().add("receiver@receiver.com"); | |
message.setHtmlBody("<html><body>This is the Html body</body></html>"); | |
message.setDeliveryNotificationOptions(DeliveryNotificationOptions.OnSuccess); | |
message.getHeaders().add("Return-Receipt-To", "sender@sender.com"); | |
message.getHeaders().add("Disposition-Notification-To", "sender@sender.com"); | |
// Create an instance of SmtpClient Class and Specify your mailing host server, Username, Password and Port | |
SmtpClient client = new SmtpClient(); | |
client.setHost("smtp.server.com"); | |
client.setUsername("Username"); | |
client.setPassword("Password"); | |
client.setPort(25); | |
try | |
{ | |
// Client.Send will send this message | |
client.send(message); | |
} | |
catch (Exception ex) | |
{ | |
ex.printStackTrace(); | |
} |
Установка заголовков электронной почты
Заголовки электронной почты представляют собой интернет-стандарт, а RFC определяет поля заголовков, которые включены в интернет-сообщения электронной почты. Заголовок электронной почты можно указать с помощью класса MailMessage . Общие типы заголовков определены в классе HeaderType . Это запечатанный класс, который работает как обычная перечисляемая переменная.
Обычно заголовок электронной почты содержит следующие поля:
- Кому: адреса получателей могут быть указаны в поле Кому. Получатели в поле Кому являются основной аудиторией сообщения. Может быть более одного адреса получателя.
- От: Это поле представляет собой адрес электронной почты отправителя сообщения.
- Копия: Позволяет пользователям отправить сообщение как “углеродную копию” или “вежливую копию”. То есть от получателя не ожидается, что он ответит или что-то сделает. Обычно с помощью CC уведомляется руководство.
- Скрытая копия: это означает скрытую углеродную копию, относится к практике отправки сообщения нескольким получателям таким образом, что то, что они получают, не содержит полного списка получателей. Это предназначено для скрытого уведомления.
- Ответить: Это поле заголовка предназначено для указания, куда отправитель хочет, чтобы ответы отправлялись.
- Тема: Заголовок, заголовок, предмет. Часто используется как индикатор темы для сообщений, отвечающих на другие сообщения или комментирующих их.
- Дата: Этот заголовок указывает дату (и время). Обычно это дата, когда сообщение было составлено и отправлено.
- XMailer: Информация о программном обеспечении клиента отправителя. Пример: X-Mailer: Aspose.Email. XMailer используется почтовыми клиентами. У разных почтовых клиентов будут разные значения XMailer. Значение XMailer для MS Outlook - Microsoft Office Outlook, Build 11.0.5510. Его игнорирует получатель электронной почты или почтовый читатель.
Обычно заголовок электронной почты выглядит следующим образом:
Ответить-на: reply@reply.com
От: sender@sender.com
Кому: guangzhou@guangzhoo.com
Тема: тестовое письмо
Дата: 6 Мар 2006 8:2:2 +0800
X-Mailer: Aspose.Email
Чтобы настроить заголовок электронной почты, выполните следующие шаги:
- Создайте экземпляр класса MailMessage .
- Укажите адреса Получателя, Отправителя, Копии, Скрытой копии, Ответить, Тему, Дата и XMailer, используя экземпляр класса MailMessage.
- Создайте экземпляр класса MimeHeader и укажите секретный заголовок.
- Добавьте секретный заголовок в экземпляр MailMessage.
В приведенном ниже коде мы настроили заголовок электронной почты.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java | |
// Create a new instance of MailMessage class | |
MailMessage message = new MailMessage(); | |
// Set subject of the message | |
message.setSubject("New message created by Aspose.Email for Java"); | |
// Set Html body | |
message.setHtmlBody("<b>This line is in bold.</b> <br/> <br/>" + | |
"<font color=blue>This line is in blue color</font>"); | |
// Set sender information | |
message.setFrom(new MailAddress("from@domain.com", "Sender Name", false)); | |
// Add TO recipients | |
message.getTo().addItem(new MailAddress("to@domain.com", "Recipient 1", false)); | |
// Message subject | |
message.setSubject("Customizing Email Headers"); | |
// Specify Date | |
Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone("GMT")); | |
Date date = calendar.getTime(); | |
message.setDate(date); | |
// Specify XMailer | |
message.setXMailer("Aspose.Email"); | |
// Specify Secret Header | |
message.getHeaders().add("secret-header", "mystery"); | |
// Save message to disc | |
message.save(dataDir + "SetEmailHeaders_out.msg", SaveOptions.getDefaultMsg()); |
Приведенный выше фрагмент кода создает заголовок электронной почты в следующем формате. Это можно наблюдать, открыв файл MsgHeaders.msg в Microsoft Outlook и затем просмотрев его свойства.
Ответить-на: reply@reply.com
От: sender@sender.com
Кому: receiver1@receiver.com
Копия: receiver2@receiver.com
Скрытая копия: receiver3@receiver.com
Тема: тестовое письмо
Дата: 6 Мар 2006 8:2:2 +0800
X-Mailer: Aspose.Email
секретный-заголовок: mystery
Вставка заголовка в конкретное место
Метод Add коллекции заголовков добавляет заголовок в конец коллекции. Однако иногда может быть необходимо вставить заголовок в конкретное место. В этом случае метод Add не поможет. Для достижения этой цели используйте метод Insert коллекции заголовков. Если коллекция содержит заголовки с одинаковым именем, этот заголовок будет вставлен перед другими заголовками с одинаковым именем. Следующий метод Insert и пример кода для использования.
Подпись метода
HeaderCollection.insert(String name, String value)
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java | |
// Insert Header at Specific Location | |
MailMessage eml = MailMessage.load(dataDir + "test.eml"); | |
eml.getHeaders().insert("Received", "Value"); |
Добавление пользовательских заголовков к электронной почте
Программные примеры ниже демонстрируют, как указать пользовательский заголовок в сообщении электронной почты. Заголовок электронной почты можно указать с помощью класса MailMessage. Чтобы указать пользовательский заголовок в сообщении электронной почты, выполните следующие действия:
- Создайте экземпляр класса MailMessage.
- Укажите значения «Кому», «От» и «Тема», используя экземпляр MailMessage.
- Добавьте секретный заголовок в экземпляр MailMessage.
- Создайте экземпляр класса SmtpClient и отправьте электронное письмо, используя метод Send.
Следующий фрагмент кода показывает, как добавить пользовательские заголовки к электронной почте.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java | |
// Declare message as MailMessage instance | |
MailMessage message = new MailMessage(); | |
// Specify ReplyTo, from, To, Message subject and secret header field | |
message.getReplyToList().add("reply@reply.com"); | |
message.setFrom(new MailAddress("sender@sender.com")); | |
message.getTo().add("receiver1@receiver.com"); | |
message.setSubject("test mail"); | |
message.getHeaders().add("secret-header", "mystery"); | |
// Create an instance of SmtpClient Class and Specify your mailing host server, Username, Password and Port | |
SmtpClient client = new SmtpClient(); | |
client.setHost("smtp.server.com"); | |
client.setUsername("Username"); | |
client.setPassword("Password"); | |
client.setPort(25); | |
try | |
{ | |
// Client.Send will send this message | |
client.send(message); | |
} | |
catch (Exception ex) | |
{ | |
ex.printStackTrace(); | |
} |
Подписание писем с помощью DKIM
Aspose.Email позволяет подписывать электронные письма с помощью DKIM (идентификация ключей домена). Это позволяет организации взять на себя ответственность за сообщение, находящееся в транзите (о DKIM). DKIM добавляет цифровую подпись к заголовкам сообщения электронной почты, которую могут подтвердить получатели. Открытый ключ отправителя позволяет получателю проверить, что подпись совпадает с содержимым сообщения. Метод класса MailMessage dKIMSign используется для установки криптографической и подписи информации для подписи сообщения. Следующий фрагмент кода показывает, как подписывать электронные письма с помощью DKIM.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java | |
String privateKeyFile = "key2.pem"; | |
RSACryptoServiceProvider rsa = PemReader.getPrivateKey(privateKeyFile); | |
DKIMSignatureInfo signInfo = new DKIMSignatureInfo("test", "yandex.ru"); | |
signInfo.getHeaders().addItem("From"); | |
signInfo.getHeaders().addItem("Subject"); | |
MailMessage mailMessage = new MailMessage("sender@gmail.com", "test@gmail.com"); | |
mailMessage.setSubject("Signed DKIM message text body"); | |
mailMessage.setBody("This is a text body signed DKIM message"); | |
MailMessage signedMsg = mailMessage.dKIMSign(rsa, signInfo); | |
try | |
{ | |
SmtpClient client = new SmtpClient("smtp.domain.com",25, "username", "password"); | |
client.send(signedMsg); | |
} | |
catch (Exception ex) | |
{ | |
ex.printStackTrace(); | |
} | |
finally | |
{} |
Выполнение объединения почты
Объединение почты помогает создать и отправить партию аналогичных электронных сообщений. Основное содержание электронных писем остается неизменным, но содержимое может быть персонализировано. Обычно для персонализации электронной почты используются контактные данные получателя (имя, фамилия, компания и т.д.).
![]() |
---|
Рисунок: Иллюстрация работы объединения почты |
Чтобы выполнить объединение почты с Aspose.Email, выполните следующие шаги:
- Создайте функцию с сигнатурой имени.
- Создайте экземпляр класса MailMessage .
- Укажите отправителя, получателя, тему и тело.
- Создайте подпись для конца электронного письма.
- Создайте экземпляр класса TemplateRoutine и передайте ему экземпляр MailMessage .
- Получите подпись в экземпляре TemplateRoutine .
- Создайте экземпляр класса DataTable .
- Добавьте столбцы Receipt, FirstName и LastName в качестве источников данных в классе DataTable.
- Создайте экземпляр класса DataRow .
- Укажите адрес получения, имя и фамилию в объекте DataRow.
- Создайте экземпляр класса MailMessageCollection .
- Укажите экземпляры TemplateRoutine и DataTable в экземпляре MailMessageCollection .
- Создайте экземпляр класса SmtpClient и укажите сервер, порт, имя пользователя и пароль.
- Отправьте электронные письма, используя метод BulkSendAsync класса SmtpClient .
Код ниже отправляет электронное письмо одному человеку от трех других.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java | |
public static void main(String[] args) { | |
//create a new MailMessage instance as a template | |
MailMessage template = new MailMessage(); | |
//add template field to subject | |
template.setSubject("Hello, #FirstName#"); | |
template.setFrom(MailAddress.to_MailAddress("sale@aspose.com")); | |
//add template field to receipt | |
template.getTo().addMailAddress(new MailAddress("#Receipt#", true)); | |
//add template field to html body | |
//use GetSignment as the template routine, which will provide the same signment. | |
template.setHtmlBody("Dear #FirstName# #LastName#, <br><br>Thank you for your interest in <STRONG>Aspose.Network</STRONG>.<br><br>Have fun with it.<br><br>#GetSignature()#"); | |
//create a new TemplateEngine with the template message. | |
TemplateEngine engine = new TemplateEngine(template); | |
//register the GetSignment as a template routine, for we use it in the template. | |
engine.registerRoutine("GetSignature", new TemplateRoutine() { | |
public Object invoke(Object[] args) { | |
return getSignature(args); | |
} | |
}); | |
//fill a DataTable as data source | |
DataTable dt = new DataTable(); | |
dt.getColumns().add("Receipt"); | |
dt.getColumns().add("FirstName"); | |
dt.getColumns().add("LastName"); | |
DataRow dr; | |
dr = dt.newRow(); | |
dr.set("Receipt", "Nancy.Davolio<Nancy@somedomain.com>"); | |
dr.set("FirstName", "Nancy"); | |
dr.set("LastName", "Davolio"); | |
dt.getRows().add(dr); | |
dr = dt.newRow(); | |
dr.set("Receipt", "Andrew.Fuller<Andrew@somedomain.com>"); | |
dr.set("FirstName", "Andrew"); | |
dr.set("LastName", "Fuller"); | |
dt.getRows().add(dr); | |
dr = dt.newRow(); | |
dr.set("Receipt", "Janet.Leverling<Janet@somedomain.com>"); | |
dr.set("FirstName", "Janet"); | |
dr.set("LastName", "Leverling"); | |
dt.getRows().add(dr); | |
MailMessageCollection messages; | |
try | |
{ | |
//create the messages from the template and datasource. | |
messages = engine.instantiate(dt); | |
} | |
catch (MailException ex) | |
{ | |
System.out.println(ex.toString()); | |
} | |
} | |
public static Object getSignature(Object[] args) { | |
return "John Smith<br>Product Lead<br>Aspose Ltd.<br>".concat(DateTime.getNow().toShortDateString()); | |
} |