2017-02-14 3 views
0

Wir senden Kalendereinladungen von unserem System in mehreren Sprachen. (Englisch, Spanisch, Deutsch usw.) Kürzlich haben wir Georgian hinzugefügt und haben die Codierung von MailMessage.C# MailMessage AlternateView ignorieren TransferEncoding

Zum Beispiel ‚თბილისი‘ in der E-Mail kommt als ‚áƒ-áƒ'áƒ~ლáƒ~სბ

Die E-Mail ich enthält einen HTML Alternate und einen Text/Kalender Alternate senden. Ich habe beide AlternateViews TransferEncoding auf QuotedPrintable gesetzt.

Es funktioniert ordnungsgemäß für die HTML-Ansicht aber nicht die Kalenderansicht. Es wird immer als 7bit gesendet.

In meinem SmtpClient Ich habe DeliveryFormat = SmtpDeliveryFormat.International gesetzt

Dies ist, wie ich meine hinzufügen AlternateView:

var iCalInvite = InterviewService.CreateICALInvite(uniqueId, model.StartTimeUTC, model.EndTimeUTC, model.Location, model.Note, personCompany.Person.Email, personCompany.Person.FullName, interviewAttendee, model.Attendees, msg, _currentUser); 

iCalInvite.TransferEncoding = System.Net.Mime.TransferEncoding.QuotedPrintable; 
msg.AlternateViews.Add(iCalInvite); 

Dies ist die Ausgabe der HTML-Ansicht

Content-Type: text/html; charset="UTF-8" 
Content-Transfer-Encoding: quoted-printable 

Dies ist der falsche Ausgang der Kalenderansicht

Content-Type: text/calendar; method=REQUEST; charset=UTF-8; 
Content-Transfer-Encoding: 7bit 

Ich habe versucht, die Codierung der MailMessage in einer Reihe von Kombinationen zu setzen, aber keiner scheint den georgischen Text korrekt auszugeben.

MailMessage msg = new MailMessage(); 
msg.BodyTransferEncoding = System.Net.Mime.TransferEncoding.QuotedPrintable; 
msg.BodyEncoding = Encoding.UTF8; 

Jede Hilfe der Richtung würde sehr geschätzt werden. Ich habe Stunden damit verbracht, verschiedene Kombinationen der Codierung vergeblich auszuprobieren.

Danke!

Hier ein Beispiel für das, was in Google Mail angezeigt wird. Die HTML-Ansicht scheint korrekt angezeigt zu werden, die Karte jedoch nicht. enter image description here

Antwort

0

Es stellt sich heraus, dass es nichts mit meinem Code oben zu tun hat.

Wir verwenden einen Drittanbieter zum Versenden von E-Mails (PostmarkApp). Sie konvertieren alle Text-/Kalenderanhänge/alternative Ansichten vor dem Senden in 7-Bit. Als Ergebnis werden Nicht-ASCII-Zeichen am Ende verfälscht.

Ich habe die SMTP-Details in Gmail und die E-Mail mit der korrekten Codierung geändert. Ich habe ein offenes Ticket mit ihnen in Bezug auf das Problem.

0

Die MailMessage.BodyEncoding Einstellung ist einfach nicht genug; Sie müssen CharSet für alle alternativen Ansichten separat festlegen.

var calendarView = AlternateView.CreateAlternateViewFromString(body, new ContentType("text/calendar")); 
calendarView.ContentType.CharSet = Encoding.UTF8.WebName; 
msg.AlternateViews.Add(calendarView); 
+0

Dank Taffer - Ich habe Ihren Vorschlag versucht, aber das Ergebnis ist immer noch das gleiche. Ich habe der Frage ein Bild hinzugefügt, um zu zeigen, wie es in Google Mail angezeigt wird. – Eilimint