C#邮件消息替代查看忽略传输编码
我们用多种语言从系统中发送日历邀请。(英语、西班牙语、德语等) 最近,我们添加了格鲁吉亚语,并且有邮件消息编码的问题 例如:თბილისი' 在电子邮件中以“áƒ-Ⴣƒƒƒƒƒƒƒƒƒ”的形式发送 我们发送的电子邮件包括HTML备选视图和文本/日历备选视图。 我将两个备选视频传输编码设置为QuotedPrintable 它适用于HTML视图,但不适用于日历视图。它总是按原样发送 在我的C#邮件消息替代查看忽略传输编码,c#,calendar,mailmessage,quoted-printable,alternateview,C#,Calendar,Mailmessage,Quoted Printable,Alternateview,我们用多种语言从系统中发送日历邀请。(英语、西班牙语、德语等) 最近,我们添加了格鲁吉亚语,并且有邮件消息编码的问题 例如:თბილისი' 在电子邮件中以“áƒ-Ⴣƒƒƒƒƒƒƒƒƒ”的形式发送 我们发送的电子邮件包括HTML备选视图和文本/日历备选视图。 我将两个备选视频传输编码设置为QuotedPrintable 它适用于HTML视图,但不适用于日历视图。它总是按原样发送 在我的SmtpClient中,我设置了DeliveryFormat=SmtpDeliveryFormat.Inte
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 msg = new MailMessage();
msg.BodyTransferEncoding = System.Net.Mime.TransferEncoding.QuotedPrintable;
msg.BodyEncoding = Encoding.UTF8;
如蒙指导,不胜感激。
我花了几个小时尝试各种编码组合,但都没有用
谢谢
下面是Gmail中出现的一个例子。
HTML视图显示位置正确,但卡不正确。
设置
邮件。BodyEncoding
是远远不够的;必须分别为所有备选视图设置字符集
var calendarView = AlternateView.CreateAlternateViewFromString(body, new ContentType("text/calendar"));
calendarView.ContentType.CharSet = Encoding.UTF8.WebName;
msg.AlternateViews.Add(calendarView);
结果证明这与我上面的代码无关 我们使用第三方提供商发送电子邮件(PostmarkApp)。 它们在发送之前将所有文本/日历附件/备选视图转换为7位。因此,非ASCII字符最终将被损坏 我将SMTP详细信息更改为Gmail,并使用正确的编码发送电子邮件。
关于这个问题,我与他们有一个公开的问题。谢谢塔夫-我尝试了你的建议,但结果仍然是一样的。我在问题中添加了一张图片,展示它在Gmail中的表现。