Skapa MIME-meddelanden med C#

När du skickar ett e-postmeddelande kan du behöva skicka multimediainnehåll som bilder, ljud och video. Det är här MIME-meddelanden (Multipurpose Internet Mail Extensions) kommer in i bilden. I den här artikeln kommer vi att utforska hur man skapar EML-meddelanden programmatiskt i C#. I slutet av artikeln kommer du att ha en förståelse för hur du skapar MIME-meddelanden, lägger till bilder till HTML-innehållet i e-postmeddelandet och sparar e-post i EML-format.

.NET API för att skapa MIME-meddelanden

Innan du skapar ditt första MIME-meddelande är det första steget att installera Aspose.Email for .NET i ditt projekt. Det är ett kraftfullt bibliotek för C#-utvecklare som tillhandahåller en omfattande uppsättning verktyg för att arbeta med e-postmeddelanden, inklusive möjligheten att skapa MIME-meddelanden programmatiskt. Biblioteket hjälper utvecklare att enkelt manipulera olika aspekter av MIME-meddelanden, såsom bilaga, brödtext, rubrik, kodning och mer. Du kan antingen installera biblioteket via NuGet eller ladda ner dess DLL.

PM> Install-Package Aspose.Email

Skapa en EML-fil från grunden

Eftersom ditt API har installerats är det dags att skapa din första eml från början. Ett av de enklaste sätten att göra det är att använda klassen MailMessage från Aspose.Email. MailMessage-klassen låter dig skapa ett e-postmeddelandeobjekt med olika egenskaper och metoder som låter dig ställa in avsändare, mottagare, ämne, brödtext, bilagor, rubriker och andra detaljer för din e-post.

Följande steg och ett kodavsnitt hjälper dig att skapa en EML från början:

  • Skapa ett nytt MailMessage-objekt med standardkonstruktorn.
  • Ställ in egenskaperna för MailMessage-objektet enligt dina behov.
  • Spara MailMessage-objektet till en EML-fil med metoden Save.
// Skapa ett nytt MailMessage-objekt
var eml = new MailMessage()
{
    // Ställ in avsändarens adress
    From = "sender@sender.com",
    // Lägg till en mottagaradress
    To = "receiver@receiver.com",
    // Ställ in ämnet
    Subject = "New message",
	  // Ställ in HTML-kroppen
    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>"
};

// Spara MailMessage-objektet i en EML-fil
eml.Save("message.eml", SaveOptions.DefaultEml);

Metoden Save för klassen MailMessage tar två parametrar: filsökvägen och alternativen för att spara. Sparalternativen anger formatet på utdatafilen.

Lägg till en bild till HTML-innehållet

För att utföra denna funktion måste du bädda in bilden i html-kroppen. Du kan använda “img”-taggen för att göra detta.

Följande kodavsnitt visar hur man lägger till en bild i HTML-brödtexten i ett meddelande.

  • HTML-kroppen innehåller en bildtagg med ett källattribut satt till cid:image1.
  • Klassen AlternateView används för att få en alternativ vy av meddelandetexten som innehåller den inbäddade bilden.
  • Klassen LinkedResource används för att representera den inbäddade bilden och dess innehålls-ID är inställt på “image1”.
  • Slutligen läggs den alternativa vyn till i samlingen för meddelanden med alternativa vyer.
// Skapa en ny instans av klassen MailMessage
var eml = new MailMessage
{
    // Ställ in avsändare och mottagare
    From = new MailAddress("sender@domain.com"),
    To = new MailAddress("recipient@domain.com"),
    // Ställ in ämne och kropp
    Subject = "New message with image",
    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>
       <img src='cid:myImage' />
     </body>
    </html>"
};

var alternateView = eml.AlternateViews.GetView(MediaTypeNames.Text.Html);
var imageResource = new LinkedResource(path + "image.png", MediaTypeNames.Image.Png)
{
    ContentId = "image1"
};
alternateView.LinkedResources.Add(imageResource);

eml.Save("message_with_image.eml", SaveOptions.DefaultEml);

Skapa en EML-fil från en HTML-fil

Ett sätt att göra detta är att börja med en HTML-fil och konvertera den till EML. Detta kan vara användbart om du har en HTML som du vill skicka som ett e-postmeddelande. För detta ändamål måste vi först ha HTML-innehållet. Låt oss kalla den här filen content.html. Här är ett exempel på det:

<!DOCTYPE html>
<html>
<head>
	<title>My Email</title>
</head>
<body>
	<h1>Hello,</h1>
	<img src="logo.png" alt="Logo">
	<p>This is my first email created form HTML.</p>
</body>
</html>

Du måste också förbereda alla bilder som innehåller HTML och ange rätt sökväg till dem i HTML-filen.

Nu kan vi enkelt skapa ett MailMessage genom att ställa in HTML-kroppen från content.html.

  • Skapa först ett nytt HtmlLoadOptions-objekt.
  • Ställ in en sträng som innehåller sökvägen till bilderna i PathToResources.
  • Ställ in egenskapen ShouldAddPlainTextView till true om EML ska innehålla AlternateView med vanlig text.
  • Skapa ett MailMessage-objekt genom att ladda HTML-filen och skicka in HtmlLoadOptions-objektet som en parameter.
  • Ställ in ytterligare meddelandeegenskaper.
  • Slutligen sparar du MailMessage-objektet i en EML-fil med metoden Save.
var htmlloadOptions = new HtmlLoadOptions
{
    PathToResources = path,
    ShouldAddPlainTextView = true
};

var eml = MailMessage.Load(path + @"content.html", htmlloadOptions);
// Ställ in avsändare och mottagare
eml.From = new MailAddress("sender@domain.com");
eml.To = new MailAddress("recipient@domain.com");
// Ställ in ämne
eml.Subject = "New message from HTML";

// Spara meddelandet i EML-format
eml.Save("message_from_html.eml", SaveOptions.DefaultEml);

Tips för att förbättra visningen av HTML-meddelandet i Outlook

För att se ditt HTML-meddelande i Outlook måste du se till att dess kod är kompatibel med Outlook-renderingsmotorn, som skiljer sig från de flesta webbläsare. Några av de vanligaste problemen som kan påverka din HTML-e-post i Outlook är:

  • Outlook stöder inte vissa av dess taggar och CSS-egenskaper, såsom bakgrundsbilder, flytningar, marginaler, utfyllnad, etc. Du kan behöva använda inline-stilar, tabeller eller villkorliga kommentarer för att uppnå önskad layout och formatering.
  • Outlook kan lägga till extra mellanslag eller linjer mellan element eller ta bort vissa element helt och hållet. Du kan behöva använda icke-avbrytande mellanslag, blanksteg med noll bredd eller tomma tabellceller för att förhindra detta.
  • Outlook kan ändra kodningen eller teckenuppsättningen för din HTML-fil, vilket kan göra att vissa tecken visas felaktigt. Du kan behöva ange kodningen och teckenuppsättningen i den med en metatagg.

Slutsats

I det här blogginlägget har du lärt dig hur du skapar MIME-meddelanden programmatiskt i C# med Aspose.Email. Steg-för-steg-handledningen och kodexemplen visade hur man skapar en eml-fil från grunden och från HTML-fil, lägger till en bild till HTML-innehållet i e-postmeddelandet och stödde allt ovanstående med användbara tips om hur man förbättrar visningen av ditt HTML-meddelande i Outlook.

Se även