Tworzenie wiadomości e‑mail z niestandardowymi opcjami w C#
Utwórz nową wiadomość e‑mail
Aby utworzyć nową wiadomość e‑mail, możesz użyć MailMessage klasa. Klasa MailMessage również inicjalizuje właściwości stworzonej wiadomości e‑mail, takie jak adres e‑mail nadawcy, adresy e‑mail odbiorców, temat wiadomości oraz treść ciała wiadomości w formacie HTML.
Rozważ poniższy kod wraz ze szczegółowymi krokami, aby utworzyć nową wiadomość e‑mail i ustawić jej właściwości.
- Utwórz nową instancję MailMessage klasa.
- Ustaw From właściwość do adresu e‑mail nadawcy.
- Ustaw Do właściwość do listy adresów e‑mail odbiorców oddzielonych przecinkami.
- Ustaw Subject właściwość do tematu wiadomości e‑mail.
- Ustaw HtmlBody właściwość do zawartości HTML ciała wiadomości e‑mail.
// 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>"
};
Ustaw domyślne kodowanie tekstu
Ustaw domyślne kodowanie tekstu dla następujących właściwości:
- Od: Nazwa wyświetlana
- Do: Nazwa wyświetlana
- Subject
- Treść
Użyj MailMessage.PreferredTextEncoding właściwość zapewniająca prawidłowe kodowanie całego tekstu w powyższych właściwościach w wiadomości e‑mail. Poniższy fragment kodu pokazuje, jak użyć francuskiego słowa jako nazwy wyświetlanej dla adresów e‑mail, tematu i treści.
Ustaw ciało wiadomości
Ustaw treść w formacie zwykłego tekstu
Treść wiadomości można określić przy użyciu Treść właściwość MailMessage klasa.
// Declare message as MailMessage instance
var eml = new MailMessage
{
// Specify HtmlBody
Body = "This is a plain text body"
};
Ustaw treść HTML
Treść wiadomości można także określić używając HtmlBody właściwość MailMessage klasa.
// Declare message as MailMessage instance
var eml = new MailMessage
{
// Specify HtmlBody
HtmlBody = "<html><body>This is the HTML body</body></html>"
};
Ustaw alternatywny tekst
Alternatywne widoki w pliku EML to dodatkowa reprezentacja treści e‑mail, którą można wykorzystać do zapewnienia innego renderowania wiadomości. Na przykład, jeśli wysyłasz wiadomość w HTML, możesz również chcieć dostarczyć wersję czystego tekstu, na wypadek gdyby niektórzy odbiorcy używali czytników, które nie wyświetlają treści HTML. W tym celu użyj AlternateView klasy. Ta klasa ma dwie właściwości, LinkedResources i BaseUri, które są używane do rozwiązywania adresów URL w treści e‑maila.
- LinkedResources jest kolekcją LinkedResource obiektach. Po renderowaniu, adresy URL w treści e‑mail są najpierw dopasowywane do adresów URL w linku treści każdego LinkedResource obiekcie w LinkedResources kolekcji i rozwiązywania.
- BaseUri jest używany przez czytnik poczty do rozwiązywania względnych adresów URL w treści, a także do rozwiązywania względnych adresów URL linków treści, w LinkedResources kolekcję.
Rozważ poniższy kod ze szczegółowymi krokami, aby ustawić alternatywny tekst.
- Utwórz instancję MailMessage klasa.
- Utwórz AlternateView do wyświetlenia wiadomości e‑mail przy użyciu treści określonej w ciągu znaków.
- Dodaj alternatywny tekst używając Add metoda MailMessage.AlternateViews kolekcję.
// 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);
Określ kodowanie treści e‑mail
Aspose.Email używa BodyEncoding właściwość MailMessage klasa do określenia kodowania treści e‑maila. Na przykład:
eml.BodyEncoding = Encoding.UTF8;
Określ wielu odbiorców
Istnieją trzy sposoby określenia odbiorców wiadomości e‑mail: użycie pól To, CC lub BCC.
-
To pole jest głównym odbiorcą twojej wiadomości. Możesz wprowadzić jeden lub więcej adresów e‑mail w tym polu, oddzielając je przecinkami. Pole To jest obowiązkowe w każdej wiadomości e‑mail.
-
CC pole oznacza carbon copy. Służy do wysłania kopii twojej wiadomości do innych osób zainteresowanych lub zaangażowanych w temat. Pole CC jest opcjonalne i może również zawierać wiele adresów e‑mail. Odbiorcy w polu CC mogą zobaczyć, kto jeszcze otrzymał wiadomość.
-
BCC pole oznacza blind carbon copy. Jest podobne do pola CC, ale odbiorcy w polu BCC są ukryci przed innymi odbiorcami. Pole BCC jest przydatne, gdy chcesz chronić prywatność niektórych odbiorców lub uniknąć zagracania ich skrzynki odpowiedziami. Pole BCC jest również opcjonalne i może zawierać wiele adresów e‑mail.
Rozważ poniższy kod ze szczegółowymi krokami, aby określić wielu odbiorców wiadomości e‑mail.
Kroki kodu:
- Utwórz nową instancję MailMessage klasa.
- Ustaw From właściwość do adresu e‑mail nadawcy.
- Ustaw Do właściwość do tablicy adresów e‑mail głównych odbiorców.
- Ustaw CC właściwość do tablicy adresów e‑mail odbiorców, którzy otrzymają kopię wiadomości.
- Ustaw Bcc właściwość do tablicy adresów e‑mail odbiorców, którzy otrzymają ukrytą kopię wiadomości.
Przykład kodu:
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"}
};
Dodaj nazwy wyświetlane do adresów e‑mail
Oprócz adresu e‑mail, można dołączyć nazwę wyświetlaną, aby zidentyfikować nadawcę lub odbiorcę e‑maila. Może to być pełne imię i nazwisko, pseudonim lub inny identyfikator.
Gdy wiadomość e‑mail jest wyświetlana w kliencie poczty lub interfejsie webmail, nazwa wyświetlana jest zwykle pokazana obok adresu e‑mail, ułatwiając użytkownikowi zidentyfikowanie nadawcy lub odbiorcy wiadomości. Aby dodać nazwy wyświetlane do adresów e‑mail w wiadomości, rozważ poniższy kod ze szczegółowymi krokami:
- Wczytaj wiadomość e‑mail z pliku używając
MailMessage.Loadmetoda. - Ustaw nadawcę e‑maila używając
Fromwłaściwość obiektu eml poprzez utworzenie nowegoMailAddressobiekt z adresem e‑mail oraz wyświetlaną nazwą nadawcy. - Dodaj odbiorcę do e‑maila używając
Towłaściwość obiektu eml, w razie potrzeby dodaj listę CC (kopia węglowa) używającCCwłaściwość, listę BCC (ukryta kopia) używającBccwłaściwość i wywołajAddmetoda z nowymMailAddressobiekt zawierający adres e‑mail oraz wyświetlaną nazwę odbiorcy.
Przykład kodu:
// 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 "));
Ustaw dodatkowe właściwości
Z Aspose.Email możesz używać dodatkowych właściwości MailMessage klasa, takie jak:
-
Date właściwość - ustawia datę i czas e‑maila. Domyślnie data jest rzeczywistą datą, kiedy wiadomość została wysłana, a czas to moment jej wysłania, wyświetlany w Microsoft Outlook. Jednak rzeczywisty czas dostarczenia e‑maila jest dodawany przez sam serwer SMTP w nagłówku wiadomości. Na przykład, poniżej znajduje się typowy nagłówek mailowy, w którym Date ustawia pole 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 wyliczanka - określa poziomy priorytetu przy wysyłaniu wiadomości e‑mail. Może być niski, normalny lub wysoki. Priorytet wpływa na szybkość transmisji i dostarczenia.
-
MailSensitivity wyliczanka - określa pięć poziomów wrażliwości.
-
XMailer- określa oprogramowanie, które utworzyło wiadomość e‑mail.
Poniższy fragment kodu ilustruje, jak można używać każdej z wyżej omówionych właściwości.
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"
};
Poproś o potwierdzenie odczytu
Aby zażądać potwierdzenie odczytu, użyj Aspose.Email DeliveryNotificationOptions właściwość MailMessage klasa. Ta właściwość zawiera wartości DeliveryNotificationOptions wyliczanka.
Rozważ poniższy przykład kodu:
// 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());
}
Uwaga: Żądania potwierdzenia przeczytania nie zawsze mogą być spełnione, ponieważ:
- Klient poczty może nie implementować tej funkcji.
- Użytkownik końcowy może mieć tę funkcję wyłączoną.
- Użytkownik końcowy może zdecydować się nie wysłać go.
Dostosuj nagłówki e‑mail
Nagłówki e‑mail stanowią standard internetowy, a RFC definiuje pola nagłówków, które są zawarte w wiadomościach e‑mail w Internecie. Nagłówek e‑mail można określić przy użyciu MailMessage klasa. Powszechne typy nagłówków są zdefiniowane w HeaderType klasa. Jest to zamknięta klasa działająca jak zwykła wyliczanka.
Zazwyczaj nagłówek e‑mail zawiera następujące pola:
- To: Adresy odbiorców można podać w polu To. Odbiorcy w polu To stanowią główną publiczność wiadomości. Można podać więcej niż jeden adres odbiorcy.
- From: To pole przedstawia adres e‑mail nadawcy wiadomości.
- Cc: Pozwala użytkownikom wysłać wiadomość jako "Carbon Copy" lub "Courtesy Copy". Odbiorca nie jest spodziewany do odpowiedzi lub działania. Zwykle osoby nadzorujące są powiadamiane za pomocą CC.
- Bcc: Oznacza Blind Carbon Copy (ukryta kopia), co pozwala wysłać e‑mail do odbiorcy, który jest ukryty przed innymi odbiorcami.
- ReplyTo: To pole nagłówka wskazuje, gdzie nadawca chce otrzymywać odpowiedzi.
- Subject: Tytuł, nagłówek, temat. Często używany jako wskaźnik wątku dla wiadomości będących odpowiedzią lub komentarzem do innych wiadomości.
- Date: Ten nagłówek określa datę (i czas). Zwykle jest to data, w której wiadomość została sporządzona i wysłana.
- XMailer: Informacje o oprogramowaniu klienta nadawcy. Przykład: X-Mailer: Aspose.Email XMailer jest używany przez klientów poczty. Różni klienci poczty będą mieli różne wartości XMailer. Wartość XMailer w MS Outlook to Microsoft Office Outlook, Build 11.0.5510. Jest ona ignorowana przez odbiorcę wiadomości lub czytnik poczty.
Zwykle nagłówek e-mail wygląda mniej więcej tak:
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
Aby dostosować nagłówek e‑mail, postępuj zgodnie z następującymi krokami kodu:
- Utwórz instancję MailMessage klasa.
- Określ To, From, Cc, Bcc, ReplyTo, Subject, Date i XMailer używając instancji MailMessage.
- Utwórz instancję MimeHeader klasy i określ niestandardowy nagłówek.
- Dodaj niestandardowy nagłówek do MailMessage instancję.
Poniższy fragment kodu pokazuje, jak ustawić nagłówki e‑mail.
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"
};
Powyższy fragment kodu generuje nagłówek e‑mail w następującym formacie:
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
Wstaw nagłówek w określonym miejscu
Ten Add metoda HeaderCollection klasa wstawia nagłówek na końcu kolekcji. Jednak czasami może być konieczne wstawienie nagłówka w określonym miejscu. W takim przypadku, the Add metoda nie będzie pomocna. Aby to osiągnąć, użyj Insert metoda HeaderCollection. Jeśli kolekcja zawiera nagłówki o tej samej nazwie, ten nagłówek zostanie wstawiony przed innymi nagłówkami o tej samej nazwie. Poniższy fragment kodu pokazuje, jak wstawić nagłówek w określonym miejscu.
eml.Headers.Insert("Received", "Value");
Dodaj niestandardowe nagłówki
Nagłówek e‑mail można określić przy użyciu MailMessage klasa. Aby określić niestandardowy nagłówek w wiadomości e‑mail, rozważ poniższy przykład kodu:
eml.Headers.Add("secret-header", "mystery");
Powyższy fragment kodu generuje nagłówek e‑mail w następującym formacie:
secret-header: mystery
Utwórz podpisane wiadomości
API Aspose.Email zapewnia możliwość tworzenia podpisanych wiadomości przy użyciu certyfikatów. The AttachSignature metoda MailMessage klasa może być użyta do podpisania wiadomości w celu zapisania lub nawet wysłania przy użyciu SmtpClient.
Podpisz wiadomość
Poniższy fragment kodu pokazuje, jak podpisać wiadomość.
Użycie opcji odłączonego certyfikatu
Klienci e‑mail w przeglądarkach mogą nie wyświetlać treści podpisanej wiadomości. Można to rozwiązać, odłączając certyfikat przed wysłaniem do klientów internetowych. Flaga odłączenia w przeciążonej metodzie AttachSignature można użyć do tego celu. Jeśli ustawione na true, certyfikat jest odłączony od e‑maila i odwrotnie. Aby zobaczyć treść podpisanej wiadomości w klientach internetowych, musisz utworzyć MailMessage z odłączonym podpisem. Poniższy fragment kodu pokazuje, jak użyć opcji odłączonego certyfikatu.