none
Mit SMTP gesendete Mails werden von Apple Usern als HTML Text empfangen

    Frage

  • Hallo,

    ich versende via SMTP ein HTM File. In der Windows Welt scheint beim Empfänger alles gut lesbar zu sein. Es gibt auf Apple Computern und IPhones das Problem, dass dort nur der HTML Text ankommt.

    Hier ein paar sinpets:

    Für den Textbody verwende ich

    Dim strBody As String = File.ReadAllText(_textbody, System.Text.Encoding.Default)

    _Textbody ist meine HTM Datei, die mit einem HTML Editor erstellt wurde

    Evtl. spielt das eine Rolle: Die HTM Datei enthält u.a. Bildreferenzen, d.h. Bilder werden mit .Net LinkedResource vor dem Versand eingefügt und die Referenz wird im HTML ersetzt, z.B.:

       strBody = strBody.Replace(strOldOPicRef, "cid:InlineImage" & Path.GetFileNameWithoutExtension(strPic))
    Wieso können Apple User diese Mails nicht lesen, noch nicht einmal den Text?

    Gruß

    Thomas

     

    Donnerstag, 9. Oktober 2014 08:53

Alle Antworten

  • Hallo Thomas,

    Dim strBody As String = File.ReadAllText(_textbody, System.Text.Encoding.Default)

    In der Beschreibung der Default-Eigenschaft für die Codierung wird von ihrer Verwendung abgeraten, weil verschiedene Rechner sie anders deuten mögen. Hast Du mit einer anderen Codierung probiert?

    Siehe dazu: Encoding.Default-Eigenschaft

    Grüße, Dimitar


    Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip „IT-Pros helfen IT-Pros“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.

    Donnerstag, 9. Oktober 2014 13:01
    Moderator
  • Hallo Dimitar,

    ja ich habe einige Codierungen probiert. Fehlanzeige.

    Ich habe inzwischen Grund zur Annahme, dass das irgendwie mit der Art und Weise zusammenhängt , wie durch "LinkedResource " Bilder eingefügt werden, denn ohne Bild, scheint es auch bei den Apple Testern zu gehen.

    Ich schicke mal den code mit, habe das aber bisher nur mit einem Bild getestet. (Die auskommentierten Zeilen bitte ignorieren)

     For Each strPic As String In System.IO.Directory.GetFiles(strFolder)
                    'Dim at As String = strFolder
                    If strPic.EndsWith("jpg") Then
                        Dim strOldOPicRef As String = Path.GetFileName(strPic)
                        '  strBody = strBody.Replace("xxxyyy.jpg", "cid:InlineImageID")
                        strBody = strBody.Replace(strOldOPicRef, "cid:InlineImage" & Path.GetFileNameWithoutExtension(strPic))
                        ' We'll need LinkedResource class to place an image to HTML email
                        'Dim MyImage As LinkedResource = New LinkedResource(strFolder & "\xxxxyyyy.jpg")
                        Dim MyImage As LinkedResource = New LinkedResource(strPic)
                        ' Set ContentId property. Value of ContentId property must be the same as
                        ' the src attribute of image tag in email body. In this case it is 
                        ' <img src="cid:InlineImageID" />
                        MyImage.ContentId = "InlineImage" & Path.GetFileNameWithoutExtension(strPic)
                        ' Now we'll create two email views: HTML and plain text
                        ' First, create HTML view
                        Dim HTMLEmail As AlternateView = AlternateView.CreateAlternateViewFromString(strBody, Nothing, "text/html")
                        ' Create plain text view for those visitors who prefer text only messages
                        ' Add this linked resource to HTML view
                        HTMLEmail.LinkedResources.Add(MyImage)
                        msg.AlternateViews.Add(HTMLEmail)
    
                        Dim PlainTextEmail As AlternateView = AlternateView.CreateAlternateViewFromString(strBody, Nothing, "text/plain")
                        'Add plain text and HTML views to an email
                        msg.AlternateViews.Add(PlainTextEmail)
                    End If
                Next

    Sicher noch verbesserungsfähig. Die Idee dabei ist, die vorhanden Bildverweise im Original HTML durch die beim Versand erforderliche ContentId zu ersetzen. In dem Fall immer cid:InlineImage + Dateiname des Bildes

    Dies scheint Apple nicht zu mögen. Ich bin absolut kein HTML Freak könnte mir aber vorstellen, dass es hier Versionsunterschiede gibt, denn offensichtlich können Windows Phones und Outlook User das gut empfangen.

    Könnte das am Header liegen?

    <?xml version="1.0" encoding="utf-8"?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
      <head>
        <title>Document Title 2</title>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
      </head>

    Donnerstag, 9. Oktober 2014 13:30
  • Hallo Thomas,

    Allem Anschein nach ist Dein Code fehlerfrei, soweit er in der Windows Welt wohl funktioniert. Die Fehlfunktion mag von der unterschiedlichen Umgebung im zweiten Fall herrühren.

    Grüße, Dimitar


    Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip „IT-Pros helfen IT-Pros“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.


    Dienstag, 14. Oktober 2014 06:43
    Moderator