ich habe in meiner App eine Email-Funktion, welche einen HTML- und Plaintext versendet. Versendet wird per SecureSMPTSocket. Die versendeten Mails, welche mit einem Mailprogramm wie Apple Mail, Outlook oder Thunderbird abgerufen werden, sehen absolut so aus, wie es sein soll. Wird die Mail aber im Webmailer von GMX dargestellt, dann sieht sie wie falsch encodiert aus.
Auch im Mailbetreff sind diese Zeichen zu finden: e.V. Zugangscode für Vorname Name
Ich habe nun schon versucht die Strings (BodyHTML und Plaintext) anders zu encodieren, das hatte keine Wirkung. Wie gesagt, exakt die gleiche Mail wird im Mailprogramm korrekt dargestellt.
Meine Mails enthalten auch ein Bild (inline) eines QR-Codes. Dieses wird immer korrekt dargestellt.
Kann mir jemand bei diesem Problem helfen? Bei GMX finde ich keine Konfigurationsmöglichkeiten…
Zeig doch bitte mal den Header der ausgehenden eMail.
Eigentlich ist, sofern die eMail alle notwendigen Angaben enthält, das darstellende Programm für die korrekte Darstellung verantwortlich, hier also GMX…
Ich bin etwas überfordert, ich weiß nicht recht, was ich wie liefern soll
Hier ist der Code meiner Funktion zur Erstellung der Mail:
Private Function CreateMessage(person As classPerson, withQR As Boolean) As EmailMessage
// baut die Mail aus Text und QR-Code-Bild zusammen
Var pic As Picture = CreateQRPic(person)
Var email As New EmailMessage
If withQR Then ' soll ein QR-Code rein?
Var emailAnhang As New EmailAttachment
emailAnhang.Name = "qrpic.png"
emailAnhang.ContentEncoding = "BASE64"
emailAnhang.Data = EncodeBase64(pic.ToData(Picture.Formats.PNG), 76)
email.Attachments.Add(emailAnhang)
End If
email.FromAddress = TFUsername.Text
email.Headers.AddHeader("Content-Transfer-Encoding", "8bit")
email.Headers.AddHeader("Content-Type", "text/html; charset=UTF-8")
email.Subject = UpdateMailTitle(person.Vorname, person.Nachname, person.Kursnummer) ' Strings in Mailtitel ersetzen
Var ptext As String = HTMLToPlainText(UpdateMailText(person.Vorname, person.Nachname, person.Kursnummer))
email.BodyPlainText = ptext
email.BodyHTML = UpdateMailText(person.Vorname, person.Nachname, person.Kursnummer) ' Strings im Mailtext ersetzen
email.AddRecipient(person.MailAdresse)
Return email
End Function
In den Funktionen Update… werden nur die Namen in den Strings ersetzt. Der Text für die Mail kommt aus einem RTEdit-Textfeld. Der Mailtitel ist ein normales Textfeld.
Wenn die Email einen Plain Text und einen Html Text hat, dann ist der Content-Type schon mal falsch. Die Email benötigt dann einen “multipart/alternative” Content-Type. Kann die Xojo Email-Klasse so etwas überhaupt erzeugen? Ich würde Dir vorschlagen, den Plain Text-Teil wegzulassen und nur Html zu verschicken.
Ja, das weglassen des Plaintextes hat geholfen. Nun wird der Mailtext ordentlich angezeigt. Der Mailtitel hingegen hat sich nicht verändert, weiterhin : SV13 e.V. Zugangscode für Andreas Gelezun