Bei der Erstellung von E - Mail - Nachrichten Sie sollen den festlegen Content-Type auf multipart/alternative
beim Senden von HTML und TEXT odermultipart/mixed
wenn Text und Anhänge senden.
Was tun Sie also, wenn Sie HTML, Text und Anhänge senden möchten? Verwende beide?
email
smtp
content-type
mime
Xeoncross
quelle
quelle
Antworten:
Ich habe diese Herausforderung heute gemeistert und fand diese Antworten nützlich, aber für mich nicht explizit genug.
Bearbeiten : Ich habe gerade die Apache Commons-E-Mail gefunden , die dies gut zusammenfasst, was bedeutet, dass Sie es unten nicht wissen müssen.
Wenn Ihre Anforderung eine E-Mail mit:
Die einzige Struktur, die ich gefunden habe und die mit Google Mail / Outlook / iPad funktioniert, ist:
Und der Code lautet:
Und ein Beispiel für die Verwendung mit Google Mail
quelle
"<" id-left "@" id-right ">"
.Verwenden Sie
multipart/mixed
mit dem ersten Teil alsmultipart/alternative
und den nachfolgenden Teilen für die Anhänge. Verwendentext/plain
undtext/html
Teile innerhalb desmultipart/alternative
Teils.Ein fähiger E-Mail-Client sollte dann den
multipart/alternative
Teil erkennen und den Textteil oder HTML-Teil nach Bedarf anzeigen. Es sollten auch alle nachfolgenden Teile als Anbauteile angezeigt werden.Hierbei ist zu beachten, dass es in mehrteiligen MIME-Nachrichten durchaus gültig ist, Teile in Teilen zu haben. Theoretisch kann sich diese Verschachtelung auf jede Tiefe erstrecken. Jeder einigermaßen fähige E-Mail-Client sollte dann in der Lage sein, alle Nachrichtenteile rekursiv zu verarbeiten.
quelle
multipart/alternative
richtig zu bestellen . Der letzte Eintrag ist der Teil mit der besten / höchsten Priorität, daher möchten Sie dentext/html
Teil wahrscheinlich als letzten Unterabschnitt einfügen. Per RFC1341 .multipart/related
ist mit und wann?multipart/alternative
dass nur eines der enthaltenen Teile angezeigt werden soll - z. B. ein Teiltext/plain
und ein Teiltext/html
. Der E-Mail-Client sollte also nicht beide Teile anzeigen, sondern nur einen. dh sie sind nicht verwandt.multipart/related
gibt an, dass die verschiedenen Unterteile alle Teil des Hauptstammteils sind, z. B. der Hauptteiltext/html
und die Unterteile eingebettete Bilder sind. Sehen Sie hier für weitere Informationen.mutt
CLI-Client überprüfen, ob Sie Ihre mehrteiligen MIME-Nachrichten korrekt eingerichtet haben. Wenn Siev
während der Anzeige einer Nachricht drücken , wird der verschachtelte Baum der MIME-Teile angezeigt und durchlaufen.Nachrichten haben Inhalt. Inhalt kann Text, HTML, ein DataHandler oder ein Multipart sein, und es kann nur einen Inhalt geben. Multiparts haben nur BodyParts, können aber mehrere haben. BodyParts können wie Nachrichten bereits beschriebene Inhalte enthalten.
Eine Nachricht mit HTML, Text und einem Anhang kann hierarchisch wie folgt angezeigt werden:
Und der Code zum Erstellen einer solchen Nachricht:
quelle
Ich bin auf dieses Problem gestoßen. Diese Architektur (nach Lains Antwort) hat bei mir funktioniert. Hier ist die Lösung in Python.
Hier ist die Hauptfunktion zum Erstellen von E-Mails:
Hier ist der vollständige Code zum Senden einer E-Mail mit HTML / Text / Anhang:
quelle
Aufbauend auf Iains Beispiel hatte ich ein ähnliches Bedürfnis, diese E-Mails mit separatem Klartext, HTML und mehreren Anhängen zu verfassen, aber mit PHP. Da wir Amazon SES zum Senden von E-Mails mit Anhängen verwenden, müssen Sie die E-Mail derzeit mithilfe der Funktion sendRawEmail (...) von Grund auf neu erstellen.
Nach vielen Nachforschungen (und mehr als normaler Frustration) wurde das Problem gelöst und der PHP-Quellcode veröffentlicht, damit er anderen helfen kann, bei denen ein ähnliches Problem auftritt. Hoffe, das hilft jemandem - die Affentruppe, die ich gezwungen habe, an diesem Problem zu arbeiten, ist jetzt erschöpft.
PHP-Quellcode zum Senden von E-Mails mit Anhängen über Amazon SES.
quelle
$boundary
enthalten sie den ganzen Körper mit Anhängen, aber nur$boundary2
HTML oder einfachen Text. Geniale Lösung. Sagen Sie mir bitte, dies ist Ihre Lösung für das Senden von Klartext. Ist dies eine alternative Nachricht, wenn der Mail-Client HTML nicht unterstützt? Vielen Dank!Tolle Antwort Lain!
Es gab ein paar Dinge, die ich getan habe, um diese Arbeit in einem breiteren Satz von Geräten zu machen. Am Ende werde ich die Clients auflisten, auf denen ich getestet habe.
Ich habe einen neuen Build-Konstruktor hinzugefügt, der die Parameteranhänge nicht enthielt und kein MimeMultipart ("gemischt") verwendete. Sie müssen nicht gemischt werden, wenn Sie nur Inline-Bilder senden.
In der addTextVersion-Methode habe ich beim Hinzufügen von Inhalten einen Zeichensatz hinzugefügt, der wahrscheinlich übergeben werden könnte / sollte, aber ich habe ihn nur statisch hinzugefügt.
Das letzte Element wurde zur addImagesInline-Methode hinzugefügt. Ich habe die Einstellung des Bilddateinamens zum Header durch den folgenden Code hinzugefügt. Wenn Sie dies nicht tun, werden zumindest auf dem Standard-Mail-Client von Android Inline-Bilder mit dem Namen Unbekannt angezeigt, die nicht automatisch heruntergeladen und in E-Mails angezeigt werden.
Dies ist also die Liste der Clients, auf denen ich getestet habe. Outlook 2010, Outlook Web App, Internet Explorer 11, Firefox, Chrome, Outlook mit der nativen App von Apple, E-Mail über Google Mail - Browser-Mail-Client, Internet Explorer 11, Firefox, Chrome, Standard-Mail-Client für Android, Standard-Mail-Client für osx IPhone, Google Mail E-Mail-Client unter Android, Google Mail-E-Mail-Client unter IPhone, E-Mail über Yahoo - Browser-E-Mail-Client, Internet Explorer 11, Firefox, Chrome, Standard-E-Mail-Client für Android, Standard-E-Mail-Client für osx IPhone.
Hoffe das hilft jemand anderem.
quelle
Hier ist das Beste: Mehrteilige / gemischte MIME-Nachricht mit Anhängen und Inline-Bildern
Und Bild: https://www.qcode.co.uk/images/mime-nesting-structure.png
Schema mehrteilig / verwandt / alternativ
quelle
Gemischter Untertyp
Alternativer Subtyp
Quelle
quelle