Създаване на имейл съобщения с персонализирани опции в 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>"
};
Задаване на кодировка по подразбиране за текст
Задайте кодировката по подразбиране за следните свойства:
- От: Показвано име
- До: Показвано име
- Subject
- Тяло
Използвайте MailMessage.PreferredTextEncoding свойство, което гарантира, че целият текст във горепосочените свойства е правилно кодиран в имейл съобщението. Следният фрагмент от код показва как да се използва френска дума като показвано име за имейл адреси, тема и тяло.
Задаване на тяло на имейл
Задаване на plain text тяло
Тялото на имейла може да се зададе чрез Тяло свойство на 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 адреси в тялото и също за разрешаване на относителни Content Link URL адреси, в 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;
Указване на множество получатели
Има три начина за указване на получателите на имейл съобщение: с полетата To, CC или BCC.
-
To полето е главният получател на вашето съобщение. Можете да въведете един или повече имейл адреси в това поле, разделени със запетаи. Полето To е задължително за всяко имейл съобщение.
-
CC полето означава carbon copy. То се използва за изпращане на копие от вашето съобщение до други хора, които се интересуват или са ангажирани с темата. Полето CC е незадължително и също може да съдържа множество имейл адреси. Получателите в CC полето могат да видят кой още е получил съобщението.
-
BCC полето означава blind carbon copy. То е подобно на полето CC, но получателите в BCC полето са скрити от останалите получатели. BCC полето е полезно, когато искате да защитите поверителността на някои получатели или да избегнете запълването на техните кутии с отговори. BCC полето също е незадължително и може да съдържа множество имейл адреси.
Разгледайте следния код с подробни стъпки за задаване на множество получатели за имейл съобщение.
Стъпки в кода:
- Създайте нов екземпляр на MailMessage клас.
- Задайте From свойство за имейл адреса на подателя.
- Задайте Към свойство към масив от имейл адреси на основните получатели.
- Задайте CC свойство към масив от имейл адреси на получателите, които ще получат копие от имейла.
- Задайте Bcc свойство към масив от имейл адреси на получателите, които ще получат слепо копие (blind carbon copy) на имейла.
Пример на код:
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());
}
Note: Заявките за разписка за прочитане може да не се изпълнят винаги, защото:
- Имейл клиентът може да не реализира тази функция.
- Крайният потребител може да има тази функционалност изключена.
- Крайният потребител може да избере да не изпрати такъв.
Персонализирайте имейл хедъри
Заглавките на имейли представляват интернет стандарт и RFC определя полетата на заглавки, включени в интернет имейл съобщения. Заглавка на имейл може да бъде зададена чрез MailMessage клас. Общите типове на заглавки са дефинирани в HeaderType клас. Това е затворен клас, който функционира като обикновено изброяване.
Обикновено имейл хедърът съдържа следните полета:
- 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 екземпляр.
Следният фрагмент от код показва как да зададете заглавки на имейл.
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
Вмъкване на заглавка на конкретно място
Този Добавяне метод на 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 с отделен подпис. Следният кодов фрагмент ви показва как да използвате опцията за отделен сертификат.