我们以多种语言从我们的系统发送日历邀请。 (英语,西班牙语,德语等) 最近我们添加了Georgian并且正在发出MailMessage的编码。
例如,电子邮件中的'თბილისი'以“áƒ-áƒ'áƒ〜ლáƒ〜á¡¡~~”
的形式出现我们发送的电子邮件包括HTML AlternateView和文本/日历AlternateView。 我将AlternateViews TransferEncoding设置为QuotedPrintable。
它适用于HTML视图,但不适用于日历视图。它总是以7bit的形式发送。
在SmtpClient
我已设置DeliveryFormat = SmtpDeliveryFormat.International
这就是我添加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);
这是HTML视图的输出
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
这是日历视图的错误输出
Content-Type: text/calendar; method=REQUEST; charset=UTF-8;
Content-Transfer-Encoding: 7bit
我已尝试以多种组合设置MailMessage的编码,但似乎都没有正确输出格鲁吉亚文本。
MailMessage msg = new MailMessage();
msg.BodyTransferEncoding = System.Net.Mime.TransferEncoding.QuotedPrintable;
msg.BodyEncoding = Encoding.UTF8;
任何方向的帮助将不胜感激。 我花了好几个小时尝试各种编码组合无济于事。
谢谢!
答案 0 :(得分:0)
设置public class Filters extends DefaultHttpFilters {
@Inject
public Filters(GzipFilter gzip, LoggingFilter logging) {
super(gzip, logging);
}
}
是不够的;您必须单独为所有备用视图设置nextFilter
。
MailMessage.BodyEncoding
答案 1 :(得分:0)
事实证明这与我上面的代码无关。
我们使用第三方提供商发送电子邮件(PostmarkApp)。 它们在发送之前将所有文本/日历附件/备用视图转换为7位。结果,非ASCII字符最终会被破坏。
我将SMTP详细信息更改为Gmail以及使用正确编码发送的电子邮件。 我有一张关于这个问题的公开票。