So habe ich zwei verschiedene Ansätze versucht, ein Inline-Bild unter Verwendung von C# zu erstellen:erstellen Inline-Bild, das richtig in iOS Mail-App zeigt
- eine AlternateView
- Verwendung Mit Hilfe eines inline Attachement
Option 2 ist schlimmer, da es auf keinem meiner Test-Clients inline angezeigt wird (Outlook 2010/2013, Samsung Android E-Mail-Client, IOS 10 E-Mail-Client).
Option 1 ist fast perfekt, alle Clients zeigen das Inline-Bild korrekt an, solange keine anderen Anhänge vorhanden sind. Wenn Sie jedoch einen Dateianhang zur E-Mail hinzufügen, erhalten Sie nur in der iOS-E-Mail-App einen seltsamen Nebeneffekt. Unter iOS zeigt der Client sowohl das eingebettete Bild als auch den Anhang als Anhang an (das eingebettete Bild wird als Symbol angezeigt).
Ich habe versucht, dies herauszufinden, indem Sie eine E-Mail in Outlook mit einem eingebetteten Bild und einem Anhang verfassen. Outlook erzeugt scheinbar zwei normale Anhänge (die rohen Nachrichtendaten aus Outlook- und dotNet-generierten E-Mails betrachten), wobei das Bild inline als Inhaltsdisposition markiert wird. Und das funktioniert bei allen meinen Testkunden. Außer bei Verwendung der .Net Mail-Nachricht api, um dies zu replizieren (Option 2), funktioniert es nicht. Ich verstehe nicht, was hier vor sich geht.
Edit 1
Was interessant ist, ist, dass, wenn eine Option mit 2, die E-Mail-Körper als Base64 codiert geliefert wird. Dies unterscheidet sich von der Vorgehensweise beim Outlook-Client. Dort ist der Text im Klartext und das Inline-Attachment-Bild ist das einzige, was in bas64 kodiert ist.
Edit 2 Einstellen der folgenden Eigenschaften, wenn sie wieder zu sein Klartext Option 2 kehrt der Körper mit:
mail.BodyEncoding = Encoding.UTF8;
mail.BodyTransferEncoding = TransferEncoding.QuotedPrintable;