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.

  1. Utwórz nową instancję MailMessage klasa.
  2. Ustaw From właściwość do adresu e‑mail nadawcy.
  3. Ustaw Do właściwość do listy adresów e‑mail odbiorców oddzielonych przecinkami.
  4. Ustaw Subject właściwość do tematu wiadomości e‑mail.
  5. 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.

  1. Utwórz instancję MailMessage klasa.
  2. Utwórz AlternateView do wyświetlenia wiadomości e‑mail przy użyciu treści określonej w ciągu znaków.
  3. 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:

  1. Utwórz nową instancję MailMessage klasa.
  2. Ustaw From właściwość do adresu e‑mail nadawcy.
  3. Ustaw Do właściwość do tablicy adresów e‑mail głównych odbiorców.
  4. Ustaw CC właściwość do tablicy adresów e‑mail odbiorców, którzy otrzymają kopię wiadomości.
  5. 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:

  1. Wczytaj wiadomość e‑mail z pliku używając MailMessage.Load metoda.
  2. Ustaw nadawcę e‑maila używając From właściwość obiektu eml poprzez utworzenie nowego MailAddress obiekt z adresem e‑mail oraz wyświetlaną nazwą nadawcy.
  3. Dodaj odbiorcę do e‑maila używając To właściwość obiektu eml, w razie potrzeby dodaj listę CC (kopia węglowa) używając CC właściwość, listę BCC (ukryta kopia) używając Bcc właściwość i wywołaj Add metoda z nowym MailAddress obiekt 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.