Створення електронних листів з настроюваними параметрами в C#
Створити новий електронний лист
Для створення нового листа ви можете використати MailMessage клас. Клас MailMessage також ініціалізує властивості створеного листа, такі як електронна адреса відправника, електронні адреси одержувачів, тема листа та вміст тіла листа у форматі HTML.
Розгляньте нижченаведений код з детальними кроками для створення нового листа та встановлення його властивостей.
- Створіть новий екземпляр MailMessage клас.
- Встановіть From властивість для електронної адреси відправника.
- Встановіть До властивість для списку електронних адрес одержувачів, розділених комами.
- Встановіть Subject властивість для теми листа.
- Встановіть HtmlBody властивість для HTML‑вмісту тіла листа.
// Create a new instance of MailMessage class
var message = new MailMessage
{
From = "from@domain.com",
To = "to1@domain.com, to2@domain.com",
Subject = "New message",
HtmlBody = @"<!DOCTYPE html>
<html>
<head>
<style>
h3{font-family:Verdana, sans-serif;color:#000000;background-color:#ffffff;}
p {font-family:Verdana, sans-serif;font-size:14px;font-style:normal;
font-weight:normal;color:#000000;background-color:#ffffff;}
</style>
</head>
<body>
<h3>New message</h3>
<p>This is a new message created by Aspose.Email.</p>
</body>
</html>"
};
Встановити кодування тексту за замовчуванням
Встановіть кодування тексту за замовчуванням для наступних властивостей:
- From: Відображуване ім’я
- To: Відображуване ім’я
- Subject
- Тіло
Використайте MailMessage.PreferredTextEncoding властивість, що забезпечує правильне кодування всього тексту в наведених вище властивостях у електронному листі. Наступний фрагмент коду показує, як використати французьке слово як ім’я відображення для електронних адрес, теми та тіла листа.
Встановити тіло листа
Встановити простий текстовий тіло
Тіло листа можна вказати за допомогою Тіло властивість MailMessage клас.
// Declare message as MailMessage instance
var eml = new MailMessage
{
// Specify HtmlBody
Body = "This is a plain text body"
};
Встановити HTML‑тіло
Тіло листа також можна вказати за допомогою HtmlBody властивість MailMessage клас.
// Declare message as MailMessage instance
var eml = new MailMessage
{
// Specify HtmlBody
HtmlBody = "<html><body>This is the HTML body</body></html>"
};
Встановити альтернативний текст
Альтернативний вигляд у файлі EML — це додаткове представлення вмісту листа, яке можна використати для іншого відображення повідомлення. Наприклад, якщо ви надсилаєте повідомлення у форматі HTML, ви можете також надати plain text версію на випадок, якщо деякі отримувачі використовують поштові клієнти, що не можуть відображати HTML. Для цього використовуйте AlternateView клас. У цього класу є дві властивості, LinkedResources і BaseUri, які використовуються для розв’язання URL‑адрес у вмісті листа.
- LinkedResources є колекцією LinkedResource об’єкти. При рендерингу URL-адреси вмісту листа спочатку порівнюються з URL-адресами в Content Link кожного LinkedResource об’єкті у LinkedResources колекції та розв’язується.
- BaseUri використовується поштовим читачем для розв’язання відносних URL у тілі та також для розв’язання відносних URL у Content Link, у LinkedResources колекція.
Розгляньте наступний код з докладними кроками для встановлення альтернативного тексту.
- Створіть екземпляр MailMessage клас.
- Create AlternateView для перегляду електронного листа, використовуючи вміст, зазначений у рядку.
- Додайте альтернативний текст за допомогою Додати метод MailMessage.AlternateViews колекція.
// Declare message as MailMessage instance
var eml = new MailMessage();
// Creates AlternateView to view an email message using the content specified in the //string
var alternate = AlternateView.CreateAlternateViewFromString("Alternate Text");
// Adding alternate text
eml.AlternateViews.Add(alternate);
Вказати кодування тіла листа
Aspose.Email використовує BodyEncoding властивість MailMessage клас для вказання кодування тіла листа. Наприклад:
eml.BodyEncoding = Encoding.UTF8;
Specify Multiple Recipients
There are three ways to specify recepients of an email message: using To, CC, or BCC fields.
-
To field is the main recipient of your message. You can enter one or more email addresses in this field, separated by commas. The To field is mandatory for every email message.
-
CC field stands for carbon copy. It is used to send a copy of your message to other people who are interested or involved in the topic. The CC field is optional and can also contain multiple email addresses. The recipients in the CC field can see who else received the message.
-
BCC field stands for blind carbon copy. It is similar to the CC field, but the recipients in the BCC field are hidden from the other recipients. The BCC field is useful when you want to protect the privacy of some recipients or avoid cluttering their inbox with replies. The BCC field is also optional and can have multiple email addresses.
Розгляньте наступний код з докладними кроками для вказання кількох отримувачів електронного листа.
Кроки коду:
- Створіть новий екземпляр MailMessage клас.
- Встановіть From властивість для електронної адреси відправника.
- Встановіть До властивість масиву електронних адрес основних отримувачів.
- Встановіть CC властивість масиву електронних адрес отримувачів, які отримають копію листа.
- Встановіть Bcc властивість масиву електронних адрес отримувачів, які отримають приховану копію листа.
Зразок коду:
var eml = new MailMessage
{
// Specify From address
From = "sender@sender.com",
// Specify recipients’ mail addresses
To = {"receiver1@receiver.com", "receiver2@receiver.com", "receiver3@receiver.com"},
// Specify CC addresses
CC = {"CC1@receiver.com", "CC2@receiver.com"},
// Specify BCC addresses
Bcc = {"Bcc1@receiver.com", "Bcc2@receiver.com"}
};
Додати відображувані імена до електронних адрес
Разом з електронною адресою можна вказати display name, щоб ідентифікувати відправника або отримувача листа. Це може бути повне ім’я людини, псевдонім або інший ідентифікатор.
Коли електронний лист відображається в поштовому клієнті або веб-інтерфейсі, відображуване ім’я зазвичай показується поруч з електронною адресою, що полегшує користувачеві ідентифікацію відправника чи одержувача. Щоб додати відображувані імена до електронних адрес у листі, розгляньте наступний код з докладними кроками:
- Завантажте повідомлення електронної пошти з файлу, використовуючи
MailMessage.Loadметод. - Встановіть відправника листа, використовуючи
Fromвластивість об’єкта eml, створивши новуMailAddressоб’єкт з електронною адресою та відображуваним ім’ям відправника. - Додайте отримувача до листа, використовуючи
Toвластивість об’єкта eml, за потреби додайте список CC (Carbon Copy) за допомогоюCCвластивість, список BCC (Blind Carbon Copy) за допомогоюBccвластивість і викликатиAddметод з новимMailAddressоб’єкт, який містить електронну адресу та відображуване ім’я отримувача.
Зразок коду:
// Load eml from file
var eml = MailMessage.Load(Data.Email/"test.eml");
eml.From = new MailAddress("TimothyFairfield@from.com", "Timothy Fairfield");
// A To address with a friendly name can also be specified like this
eml.To.Add(new MailAddress("kyle@to.com", "Kyle Huang"));
// Specify Cc and Bcc email address along with a friendly name
eml.CC.Add(new MailAddress("guangzhou@cc.com", "Guangzhou Team"));
eml.Bcc.Add(new MailAddress("ahaq@bcc.com", "Ammad ulHaq "));
Встановити додаткові властивості
За допомогою Aspose.Email ви можете використовувати додаткові властивості MailMessage клас, наприклад:
-
Date властивість - встановлює дату і час електронного листа. За замовчуванням дата — це фактична дата надсилання повідомлення, а час — час його відправлення, як показує Microsoft Outlook. Однак реальний час доставки листа додається самим SMTP‑сервером у заголовку листа. Наприклад, нижче наведено типовий заголовок листа, де Date встановлює поле Date.
// 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 -
MailPriority перелічення- визначає рівні пріоритету для надсилання електронного листа. Може бути низьким, звичайним або високим. Пріоритет впливає на швидкість передачі та доставку.
-
MailSensitivity перелічення - визначає п’ять рівнів конфіденційності.
-
XMailer- вказує програмне забезпечення, яке створило електронний лист.
Нижче наведений фрагмент коду ілюструє, як можна використати кожну з вищезгаданих властивостей.
var eml = new MailMessage("sender@gmail.com", "receiver@gmail.com", "Some subject", "Some body text")
{
Date = DateTime.Now,
Priority = MailPriority.High,
Sensitivity = MailSensitivity.Normal,
Xmailer = "Aspose.Email"
};
Запит підтвердження прочитання
Щоб запросити підтвердження прочитання, використовуйте Aspose.Email DeliveryNotificationOptions властивість MailMessage клас. Ця властивість містить значення DeliveryNotificationOptions перелічення.
Розгляньте наступний зразок коду:
// Create an Instance of MailMessage class
var eml = new MailMessage
{
// Specify From, To, HtmlBody, DeliveryNotificationOptions field
From = "sender@sender.com",
To = "receiver@receiver.com",
HtmlBody = "<html><body>This is the Html body</body></html>",
DeliveryNotificationOptions = DeliveryNotificationOptions.OnSuccess
};
eml.Headers.Add("Return-Receipt-To", "sender@sender.com");
eml.Headers.Add("Disposition-Notification-To", "sender@sender.com");
// Create an instance of SmtpClient Class
var client = new SmtpClient
{
// Specify your mailing host server, Username, Password and Port No
Host = "smtp.server.com",
Username = "Username",
Password = "Password",
Port = 25
};
try
{
// Client.Send will send this message
client.Send(eml);
// Display ‘Message Sent’, only if message sent successfully
Console.WriteLine(@"Message sent");
}
catch (Exception ex)
{
System.Diagnostics.Trace.WriteLine(ex.ToString());
}
Примітка: Запити про підтвердження прочитання можуть не завжди виконуватись, тому що:
- Клієнт електронної пошти може не реалізовувати цю функцію.
- У кінцевого користувача може бути вимкнено цю функціональність.
- Кінцевий користувач може вирішити не надсилати його.
Налаштування заголовків електронної пошти
Заголовки електронної пошти представляють інтернет-стандарт, а RFC визначають поля заголовків, які включені в інтернет-повідомлення електронної пошти. Заголовок листа можна задати за допомогою MailMessage клас. Спільні типи заголовків визначені у HeaderType клас. Це запечатаний клас, який працює як звичайне перелічення.
Зазвичай, заголовок електронного листа містить такі поля:
- To: Адреси отримувачів можна вказати у полі To. Отримувачі в полі To є основною аудиторією повідомлення. Можна вказати більше однієї адреси отримувача.
- From: Це поле містить електронну адресу відправника повідомлення.
- Cc: Дозволяє користувачам надсилати повідомлення як "Carbon Copy" (копія) або "Courtesy Copy" (пристор). Тобто, від отримувача не очікується відповіді або дії. Зазвичай, це використовується для інформування керівного персоналу.
- 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 екземпляр.
Наступний фрагмент коду демонструє, як встановити заголовки листа.
var eml = new MailMessage
{
ReplyToList = "reply@reply.com",
From = "sender@sender.com",
To = "receiver1@receiver.com",
CC = "receiver2@receiver.com",
Bcc = "receiver3@receiver.com",
Subject = "test mail",
Date = new System.DateTime(2006, 3, 6),
XMailer = "Aspose.Email"
};
Наведений вище фрагмент коду створює заголовок листа у такому форматі:
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
Вставити заголовок у конкретному місці
The Додати метод HeaderCollection клас вставляє заголовок у кінець колекції. Однак іноді може знадобитися вставити заголовок у конкретному місці. У такому випадку, the Додати метод не допоможе. Щоб досягти цього, використайте Insert метод HeaderCollection. Якщо колекція містить заголовки з однаковою назвою, цей заголовок буде вставлений перед іншими заголовками з тією ж назвою. Наступний фрагмент коду показує, як вставити заголовок у специфічному місці.
eml.Headers.Insert("Received", "Value");
Додати власні заголовки
Заголовок листа можна вказати за допомогою MailMessage клас. Щоб задати власний заголовок у листі, розгляньте наступний приклад коду:
eml.Headers.Add("secret-header", "mystery");
Наведений вище фрагмент коду створює заголовок листа у такому форматі:
secret-header: mystery
Створити підписані листи
Aspose.Email API забезпечує можливість створювати підписані листи за допомогою сертифікатів. The AttachSignature метод MailMessage клас можна використати для підписання повідомлення для збереження або навіть надсилання його за допомогою SmtpClient.
Підписати повідомлення
Наступний фрагмент коду показує, як підписати повідомлення.
Використання опції відокремленого сертифіката
Веб‑клієнти електронної пошти можуть не вміти відображати вміст тіла підписаного повідомлення. Це можна виправити, відокремивши сертифікат перед надсиланням його веб‑клієнтам електронної пошти. Прапорець відокремлення в перевантаженому методі AttachSignature можна використати для досягнення цього. Якщо встановити в true, сертифікат буде відокремлений від листа і навпаки. Щоб бачити тіло підписаного повідомлення у веб‑клієнтах, потрібно створити MailMessage з відокремленим підписом. Наступний фрагмент коду показує, як використовувати опцію відокремленого сертифіката.