Skapa e‑postmeddelanden med anpassade alternativ i C#

Skapa nytt e‑postmeddelande

För att skapa ett nytt e‑postmeddelande kan du använda MailMessage klass. Klassen MailMessage initierar också egenskaper för det skapade e‑postmeddelandet såsom avsändarens e‑postadress, mottagarnas e‑postadresser, e‑postens ämne och brödtexten i HTML‑format.

Betrakta följande kod, med detaljerade steg, för att skapa ett nytt e‑postmeddelande och ange dess egenskaper.

  1. Skapa en ny instans av MailMessage klass.
  2. Ställ in Från egenskap för avsändarens e‑postadress.
  3. Ställ in Till egenskap för en kommaseparerad lista med mottagares e‑postadresser.
  4. Ställ in Ämne egenskap för e‑postens ämne.
  5. Ställ in HtmlBody egenskap för HTML‑innehållet i e‑postens brödtext.
// 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>"
};

Ange standardtextkodning

Ange standardtextkodning för följande egenskaper:

  • Från: Visningsnamn
  • Till: Visningsnamn
  • Ämne
  • Kropp

Använd MailMessage.PreferredTextEncoding egenskap för att säkerställa att all text i ovanstående egenskaper kodas korrekt i e‑postmeddelandet. Följande kodexempel visar hur du använder ett franskt ord som visningsnamn för e‑postadresser, ämne och brödtext.

Ange e‑postkropp

Ange ren text‑kropp

En e‑postkropp kan anges med Kropp egenskap hos MailMessage klass.

// Declare message as MailMessage instance
var eml = new MailMessage
{
    // Specify HtmlBody
    Body = "This is a plain text body"
};

Ange HTML‑kropp

En e‑postkropp kan också anges med HtmlBody egenskap hos MailMessage klass.

// Declare message as MailMessage instance
var eml = new MailMessage
{
    // Specify HtmlBody
    HtmlBody = "<html><body>This is the HTML body</body></html>"
};

Ange alternativ text

En alternativ vy i en EML‑fil är en extra representation av e‑postinnehållet som kan användas för att erbjuda en annan rendering av e‑postmeddelandet. Till exempel, om du skickar ett meddelande i HTML, vill du kanske också erbjuda en plain text‑version för de fall då mottagarna använder e‑postläsare som inte kan visa HTML‑innehåll. Använd för detta AlternateView klass. Denna klass har två egenskaper, LinkedResources och BaseUri, som används för att lösa URL:er i e‑postens innehåll.

Betrakta följande kod med detaljerade steg för att ange en alternativ text.

  1. Skapa en instans av MailMessage klass.
  2. Skapa AlternateView för att visa ett e‑postmeddelande med innehållet som anges i strängen.
  3. Lägg till alternativ text med Lägg till metod för MailMessage.AlternateViews samling.
// 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);

Ange kodning av e‑postkropp

Aspose.Email använder BodyEncoding egenskap hos MailMessage klass för att specificera kodning av e‑postkroppen. Till exempel:

eml.BodyEncoding = Encoding.UTF8;

Ange flera mottagare

Det finns tre sätt att ange mottagare av ett e‑postmeddelande: med To, CC eller BCC-fält.

  • To-fältet är huvudmottagaren av ditt meddelande. Du kan ange en eller flera e‑postadresser i detta fält, separerade med kommatecken. To-fältet är obligatoriskt för varje e‑postmeddelande.

  • CC-fältet står för carbon copy. Det används för att skicka en kopia av ditt meddelande till andra personer som är intresserade eller involverade i ämnet. CC-fältet är valfritt och kan också innehålla flera e‑postadresser. Mottagarna i CC-fältet kan se vilka andra som mottagit meddelandet.

  • BCC-fältet står för blind carbon copy. Det liknar CC-fältet, men mottagarna i BCC-fältet är dolda för de andra mottagarna. BCC-fältet är användbart när du vill skydda vissa mottagares integritet eller undvika att deras inkorg översvämmas med svar. BCC-fältet är också valfritt och kan ha flera e‑postadresser.

Betrakta följande kod, med detaljerade steg, för att ange flera mottagare för ett e‑postmeddelande.

Kodsteg:

  1. Skapa en ny instans av MailMessage klass.
  2. Ställ in Från egenskap för avsändarens e‑postadress.
  3. Ställ in Till egenskap till en array av e‑postadresser för de primära mottagarna.
  4. Ställ in CC egenskap till en array av e‑postadresser för mottagarna som kommer att få en kopia av e‑posten.
  5. Ställ in Bcc egenskap till en array av e‑postadresser för mottagarna som kommer att få en blind carbon copy av e‑posten.

Kodexempel:

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"}
};

Lägg till visningsnamn till e‑postadresser

Tillsammans med en e‑postadress kan ett visningsnamn inkluderas för att identifiera avsändaren eller mottagaren av e‑posten. Det kan bestå av en persons fullständiga namn, smeknamn eller annan identifierare.

När ett e‑postmeddelande visas i en e‑postklient eller webmail‑gränssnitt, visas visningsnamnet vanligtvis tillsammans med e‑postadressen, vilket gör det enklare för användaren att identifiera vem meddelandet kommer från eller vem det är adresserat till. För att lägga till visningsnamn till e‑postadresser i ett e‑postmeddelande, överväg följande kod med detaljerade steg:

  1. Läs in e‑postmeddelandet från en fil med MailMessage.Load metod.
  2. Ställ in avsändaren av e‑posten med From egenskap hos eml‑objektet genom att skapa en ny MailAddress objekt med e‑postadressen och ett visningsnamn för avsändaren.
  3. Lägg till en mottagare till e‑posten genom att använda To egenskap hos eml‑objektet, lägg vid behov till CC (Carbon Copy)-lista med hjälp av CC egenskap, BCC (Blind Carbon Copy)-lista med hjälp av Bcc egenskap och anropa Add metod med en ny MailAddress objekt som innehåller e‑postadressen och ett visningsnamn för mottagaren.

Kodexempel:

// 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 "));

Ställ in ytterligare egenskaper

Med Aspose.Email kan du använda ytterligare egenskaper av MailMessage klass såsom:

  • Datum egenskap - sätter datum och tid för ett e‑postmeddelande. Som standard är datumet det faktiska datumet då meddelandet skickades, och tiden är den tid det skickades, enligt Microsoft Outlook. Dock läggs den faktiska leveranstiden till av SMTP‑servern i e‑posthuvudet. Till exempel, nedan är ett vanligt e‑posthuvud, där Datum sätter fältet 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 uppräkning - specificerar prioritetsnivåer för att skicka ett e‑postmeddelande. Den kan vara låg, normal eller hög. Prioritet påverkar överföringshastighet och leverans.

  • MailSensitivity uppräkning - specificerar fem nivåer av känslighet.

  • XMailer- specificerar mjukvaran som skapade e‑postmeddelandet.

Kodsnutten nedan illustrerar hur var och en av egenskaperna som diskuterats ovan kan användas.

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"
};

Begär läskvitto

För att begära en läskvitto, använd Aspose.Email DeliveryNotificationOptions egenskap hos MailMessage klass. Denna egenskap innehåller värdena för DeliveryNotificationOptions uppräkning.

Betrakta följande kodexempel:

// 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());
}

Obs: Begäran om läskvitto kanske inte alltid beaktas eftersom:

  • En e‑postklient kanske inte implementerar den funktionen.
  • Slutanvändaren kan ha den funktionen avstängd.
  • Slutanvändaren kan välja att inte skicka en.

Anpassa e‑posthuvuden

E‑posthuvuden representerar en Internetstandard och RFC definierar huvudfält som ingår i Internet‑e‑postmeddelanden. Ett e‑posthuvud kan specificeras med hjälp av MailMessage klass. Vanliga huvudtyper definieras i HeaderType klass. Det är en sluten klass som fungerar som en vanlig uppräkning.

Normalt innehåller ett e‑posthuvud dessa fält:

  • To: Mottagaradresser kan anges i To‑fältet. Mottagarna i To‑fältet är meddelandets primära publik. Det kan finnas fler än en mottagaradress.
  • From: Detta fält visar avsändarens e‑postadress.
  • Cc: Tillåter att skicka ett meddelande som en "Carbon Copy" eller "Courtesy Copy". Mottagaren förväntas inte svara eller agera. Vanligtvis informeras överordnad personal med Cc.
  • Bcc: Står för Blind Carbon Copy, vilket låter dig skicka ett e‑postmeddelande till en mottagare som är dold för andra mottagare.
  • ReplyTo: Detta huvudfält anger var avsändaren vill ha svar skickade.
  • Subject: Titel, rubrik, ämne. Används ofta som en trådad indikator för meddelanden som svarar på eller kommenterar andra meddelanden.
  • Date: Detta huvud specificerar ett datum (och tid). Vanligtvis är det datumet då meddelandet skrevs och skickades.
  • XMailer: Information om klientprogramvaran för avsändaren. Exempel: X-Mailer: Aspose.Email XMailer används av e‑postklienter. Olika e‑postklienter har olika XMailer‑värden. MS Outlooks XMailer‑värde är Microsoft Office Outlook, Build 11.0.5510. Det ignoreras av mottagaren eller e‑postläsaren.

Vanligtvis ser ett e‑posthuvud ut ungefär så här:

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

För att anpassa ett e‑posthuvud, följ dessa kodsteg:

  • Skapa en instans av MailMessage klass.
  • Ange To, From, Cc, Bcc, ReplyTo, Subject, Date & XMailer med en instans av MailMessage.
  • Skapa en instans av MimeHeader klass och specificera det anpassade huvudet.
  • Lägg till det anpassade huvudet till MailMessage instans.

Följande kodexempel visar hur du anger e‑posthuvuden.

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"
};

Ovanstående kodexempel genererar ett e‑posthuvud i följande format:

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

Infoga ett huvud på en specifik plats

Den Lägg till metod för HeaderCollection klass infogar ett huvud i slutet av samlingen. Ibland kan det dock vara nödvändigt att infoga ett huvud på en specifik plats. I så fall är Lägg till metoden kommer inte att hjälpa. För att uppnå detta, använd Insert metod för HeaderCollection. Om samlingen innehåller huvuden med samma namn, kommer detta huvud att infogas före andra huvuden med samma namn. Följande kodexempel visar hur du infogar ett huvud på en specifik plats.

eml.Headers.Insert("Received", "Value");

Lägg till anpassade huvuden

Ett e‑posthuvud kan specificeras med MailMessage klass. För att ange ett anpassat huvud i ett e‑postmeddelande, överväg följande kodexempel:

eml.Headers.Add("secret-header", "mystery");

Ovanstående kodexempel genererar ett e‑posthuvud i följande format:

secret-header: mystery

Skapa signerade meddelanden

Aspose.Email‑API ger möjlighet att skapa signerade meddelanden med certifikat. Den AttachSignature metod för MailMessage klass kan användas för att signera ett meddelande för sparande eller även för att skicka det med SmtpClient.

Signera ett meddelande

Följande kodexempel visar hur du signerar ett meddelande.

Använda fristående certifikat‑alternativ

Webbaserade e‑postklienter kanske inte kan visa innehållet i ett signerat meddelande. Detta kan åtgärdas genom att frilägga certifikatet innan det skickas till webbaserade e‑postklienter. Den frilagda flaggan i den överlagrade metoden för AttachSignature kan användas för att uppnå detta. Om satt till true är certifikatet fristående från e‑posten och vice versa. För att se innehållet i ett signerat meddelande i webbaserade klienter, behöver du skapa MailMessage med fristående signatur. Följande kodexempel visar hur du använder alternativet för fristående certifikat.