Erstellen Sie MIME-Nachrichten mit C#

MIME (Multipurpose Internet Mail Extensions) ist ein weit verbreiteter Standard zum Formatieren und Austauschen von E-Mail-Nachrichten sowie anderen Arten von Inhalten über das Internet. Es ermöglicht die Einbindung verschiedener Medientypen wie Text, Bilder, Audio und Video in eine einzige E-Mail-Nachricht. In diesem Artikel erfahren Sie, wie Sie EML-Nachrichten programmgesteuert in Python erstellen. Am Ende des Artikels wissen Sie genau, wie Sie MIME-Nachrichten erstellen, Bilder zum HTML-Inhalt der E-Mail hinzufügen und E-Mails im EML-Format speichern.

API zum Erstellen von MIME-Nachrichten in Python

Um eine MIME-Nachricht zu erstellen, müssen die im MIME-Standard festgelegten Formatierungsregeln eingehalten werden. Dies beinhaltet in der Regel die Verwendung geeigneter Bibliotheken oder Module, die von Programmiersprachen wie Python bereitgestellt werden, um die erforderliche MIME-Struktur zu generieren. Aspose.Email for Python ist eine leistungsstarke Bibliothek, die eine breite Palette von Funktionen zum Erstellen, Bearbeiten und Verarbeiten von E-Mail-Nachrichten bietet und es Entwicklern erleichtert, E-Mail-bezogene Aufgaben in ihre Python-Projekte zu integrieren. Es ist so konzipiert, dass es mit verschiedenen Formaten und auf verschiedenen Plattformen funktioniert. Sie können die API einfach über PyPI installieren oder ihre DLL herunterladen.

> pip install Aspose.Email-for-Python-via-NET

Erstellen Sie eine EML-Datei von Grund auf

Um eine neue E-Mail-Nachricht zu erstellen, verwenden wir die Klasse MailMessage von Aspose.Email. Die Klasse verfügt über alle notwendigen Methoden und Eigenschaften, um einen Absender, einen Empfänger, einen Betreff und einen HTML-Body anzugeben. Die Nachricht wird dann als EML-Datei mit dem Namen „message.eml“ gespeichert.

Der Prozess zum Erstellen einer neuen EML-Datei kann in den folgenden Schritten beschrieben werden:

  • Importieren Sie die erforderlichen Klassen aus dem Modul aspose.email.
  • Erstellen Sie mit dem Standardkonstruktor eine neue Instanz der Klasse MailMessage.
  • Legen Sie die Eigenschaften des MailMessage Objekts entsprechend Ihren Anforderungen fest: die Absenderadresse, die Empfängeradresse, den Betreff, den HTML-Text usw.
  • Definieren Sie die HTML-Struktur und den Inhalt. In unserem Beispiel wird eine einfache HTML-Struktur mit einer Überschrift und einem Absatz versehen.
  • Speichern Sie das MailMessage Objekt mit der Methode save in einer EML-Datei. In unserem Beispiel lautet der Name der Datei „message.eml“.

Das folgende Codebeispiel zeigt Ihnen, wie Sie programmgesteuert ein EML von Grund auf erstellen:

from aspose.email import MailMessage, MailAddress, LinkedResource, SaveOptions

# Erstellen Sie eine neue Instanz der MailMessage Klasse
eml = MailMessage()

# Absender und Empfänger festlegen
eml.from_address = MailAddress("sender@domain.com")
eml.to.append(MailAddress("receiver@receiver.com"))

# Legen Sie Betreff und Text fest
eml.subject = "New message with image"
eml.html_body = """<!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>"""

#  Speichern Sie das MailMessage Objekt in einer EML-Datei
eml.save("message.eml", SaveOptions.default_eml)

Die Speichermethode der Klasse MailMessage benötigt zwei Parameter: den Dateipfad und die Speicheroptionen. Die Speicheroptionen geben das Format der Ausgabedatei an.

Fügen Sie dem HTML-Inhalt ein Bild hinzu

In diesem Abschnitt betten wir mithilfe der Klasse LinkedResource derselben API ein Bild in die E-Mail ein. Die Klasse stellt eine eingebettete Ressource in einer Nachricht dar. Anschließend speichern wir die Nachricht als EML-Datei mit dem Namen „messagewithimage.eml“.

Folgen Sie einfach den Schritten.

  • Importieren Sie die erforderlichen Klassen aus dem Modul aspose.email.
  • Erstellen Sie mit dem Standardkonstruktor eine neue Instanz der Klasse MailMessage.
  • Legen Sie die Eigenschaften des MailMessage Objekts entsprechend Ihren Anforderungen fest.
  • Der HTML-Körper enthält ein Bild-Tag mit einem Quellattribut, das auf „cid:myImage“ gesetzt ist.
  • Die Klasse AlternateView wird verwendet, um eine alternative Ansicht des Nachrichtentexts zu erhalten, der das eingebettete Bild enthält.
  • Die Klasse LinkedResource wird zur Darstellung des eingebetteten Bildes verwendet und ihre Inhalts-ID ist auf „image1“ gesetzt.
  • Schließlich wird die alternative Ansicht zur Sammlung alternativer Nachrichtenansichten hinzugefügt.

Probieren Sie das folgende Codebeispiel aus, um dem HTML-Inhalt ein Bild hinzuzufügen:

from aspose.email import MailMessage, MailAddress, LinkedResource, SaveOptions
from aspose.email.mime import MediaTypeNames

# Erstellen Sie eine neue Instanz der MailMessage Klasse
eml = MailMessage()

# Absender und Empfänger festlegen
eml.from_address = MailAddress("sender@domain.com")
eml.to.append(MailAddress("receiver@receiver.com"))

# Legen Sie Betreff und Text fest
eml.subject = "New message with image"
eml.html_body = """<!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>"""

# Fügen Sie den alternativen Ansichten eine Bildressource hinzu
for alternate_view in eml.alternate_views:
    if alternate_view.content_type.media_type == "text/html":
        image_resource = LinkedResource("image.png", "image/png")
        image_resource.content_id = "myImage"
        alternate_view.linked_resources.append(image_resource)

# Speichern Sie die MailMessage als EML-Datei
eml.save("message_with_image.eml", SaveOptions.default_eml)

Erstellen Sie eine EML-Datei aus einer HTML-Datei

Die Aspose.Email-Bibliothek für Python bietet eine einfache Möglichkeit, eine HTML-Datei zu laden, zu ändern und als EML-Datei zu speichern. Dieser Konvertierungsprozess kann nützlich sein, wenn Sie einen HTML-Code haben, den Sie als E-Mail-Nachricht senden möchten. Zu diesem Zweck verwenden wir die Klasse HtmlLoadOptions. Die Klasse ermöglicht die Angabe zusätzlicher Optionen beim Laden von MailMessage aus dem HTML-Format. Zuerst benötigen wir den HTML-Inhalt. In unserem Beispiel wird es eine Datei namens „content.html“ sein.

<!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>

Außerdem müssen Sie alle Bilder, die HTML enthalten, im Voraus vorbereiten und in der HTML-Datei den richtigen Pfad zu ihnen angeben.

Jetzt können wir ganz einfach eine MailMessage erstellen, indem wir den HTML-Text aus der „content.html“ festlegen.

  • Importieren Sie die erforderlichen Klassen aus dem Modul aspose.email.
  • Erstellen Sie eine Instanz von HtmlLoadOptions, um Ladeoptionen für das HTML-Dateiobjekt anzugeben.
  • Legen Sie in der Eigenschaft pathtoresources eine Zeichenfolge fest, die den Pfad zu den Bildern enthält.
  • Setzen Sie die Eigenschaft Shouldaddplaintextview auf True, wenn EML AlternateView mit einfachem Text enthalten soll.
  • Erstellen Sie eine neue Instanz von MailMessage, indem Sie die HTML-Datei laden und das Objekt HtmlLoadOptions als Parameter übergeben.
  • Legen Sie zusätzliche Nachrichteneigenschaften fest.
  • Speichern Sie abschließend das MailMessage Objekt mit der Methode save in einer EML-Datei.
from aspose.email import HtmlLoadOptions, MailAddress, MailMessage, SaveOptions

htmlloadOptions = HtmlLoadOptions()
htmlloadOptions.path_to_resources = path
htmlloadOptions.should_add_plain_text_view = True
eml = MailMessage.load(path + str(r"content.html"), htmlloadOptions)

#  Absender und Empfänger festlegen
eml.from_address = MailAddress("sender@domain.com")
eml.to = MailAddress("recipient@domain.com")

#  Betreff festlegen
eml.subject = "New message from HTML"

#  Speichern Sie die Nachricht im EML-Format
eml.save("message_from_html.eml", SaveOptions.default_eml)

Tipps zum Verbessern der Ansicht der HTML-Nachricht in Outlook

Beim Versenden von HTML-E-Mails ist die Kompatibilität mit verschiedenen E-Mail-Clients entscheidend. Insbesondere Outlook verfügt über eine andere Rendering-Engine als die meisten Webbrowser, was zu Formatierungsproblemen führen kann. Hier sind einige davon:

  • Outlook unterstützt möglicherweise bestimmte HTML-Tags und CSS-Eigenschaften, die häufig in Webbrowsern verwendet werden, nicht. Elemente wie Hintergrundbilder, Floats, Ränder und Innenabstände werden möglicherweise nicht wie erwartet gerendert. Um dieses Problem zu lösen, ist es wichtig, Inline-Stile, Tabellen oder bedingte Kommentare zu verwenden, um das gewünschte Layout und die gewünschte Formatierung in Outlook zu erreichen.
  • Outlook fügt möglicherweise zusätzliche Leerzeichen oder Linien zwischen Elementen ein oder entfernt sogar einige Elemente ganz, wodurch Ihr sorgfältig ausgearbeitetes Design gestört wird. Um dies zu mildern, kann die strategische Verwendung von geschützten Leerzeichen, Leerzeichen mit Nullbreite oder leeren Tabellenzellen dazu beitragen, die beabsichtigte Struktur beizubehalten und unerwünschte Elementmanipulationen in Outlook zu verhindern.
  • Die Rendering-Engine von Outlook ändert möglicherweise die Kodierung oder den Zeichensatz Ihrer HTML-Datei, was zu verstümmelten oder falsch angezeigten Zeichen führt. Um eine ordnungsgemäße Darstellung zu gewährleisten, geben Sie die Codierung und den Zeichensatz in Ihrem HTML mithilfe eines Meta-Tags explizit an. Dies hilft Outlook dabei, den Text korrekt zu interpretieren und anzuzeigen, wodurch zeichenbezogene Probleme vermieden werden.

Abschluss

Erinnern wir uns zusammenfassend daran, welche Themen in diesem Artikel behandelt wurden. Sie haben gelernt, wie Sie mit Aspose.Email MIME-Nachrichten programmgesteuert in Python erstellen. Unsere detaillierten Schritt-für-Schritt-Anleitungen mit Codebeispielen machen das Tutorial lesbar und leicht verständlich.

Durch die Erstellung von MIME-Nachrichten können E-Mail-Absender sicherstellen, dass ihre Kommunikation ein breites Spektrum an Inhaltstypen unterstützt und den Empfängern ein ansprechenderes und interaktiveres Erlebnis bietet.

  • Sie können mehr über Aspose.Email for Python erfahren und es kostenlos testen.
  • Weitere Features und Funktionalitäten von Aspose.Email finden Sie auch in der Dokumentation .
  • Ihre Fragen sind in unserem Forum willkommen.

Siehe auch