这是一个破碎的主题线?

问题描述 投票:2回答:2

使用System.Net.Mail.MailMessage课程我创建了一封电子邮件。这封电子邮件是德文版,需要包含umlautü。出于这个原因,我将对象的SubjectEncoding属性声明为Encoding.UTF8。在收到电子邮件时,我注意到ü已经被两个specials character从三个邮件应用程序(GMX webmail)中的一个中取代。它适用于Office Outlook和Apple邮件应用程序。

当将主题行从下面插入this decoder时,问题是可重现的。

我开始调查并在电子邮件的元数据中找到主题行。

Subject: =?utf-8?B?Qk9PVCBUZXN0OiBFcmZvbGdyZWljaGUgQW5tZWxkdW5nIGbD?=
  =?utf-8?B?vHIgZGllIEJlcnVmc2Vya3VuZHVuZw==?=

该主题包含两个部分,它们编码标题的第一和第二部分。奇怪的是,将主题分成两部分的位置是ü的位置。

我现在不太确定在这种情况下谁有过错。 .Net是否错误地构建了编码主题行,或者webmail /解码器网站中是否存在错误?这只是或多或少严格解释RFC

.net vb.net email rfc
2个回答
1
投票

更新(感谢AnFi's answer):你碰巧打破了ü多字节字符内的base64,使其无效。

您正在寻找的RFC是RFC 2047,“MIME(多用途Internet邮件扩展)第三部分:非ASCII文本的邮件头扩展”。

关于该测试系统的说明:它不会尝试强制执行规范(您可以输入原始ü字符,尽管违反了RFC 5322,但它仍然显示没有警告;这在“不打算用作验证器”段落中注明那个页面)。

这是一个在多字节字符之外打破的base64编码:

Subject: =?utf-8?B?Qk9PVCBUZXN0OiBFcmZvbGdyZWljaGUgQW5tZWxk?=
        =?utf-8?B?dW5nIGbDvHIgZGllIEJlcnVmc2Vya3VuZHVuZwo=?=

这是你的Quoted-Printable编码。对于像德语这样只偶尔使用非ASCII字符的语言,我发现这些语言更加清晰:

Subject: BOOT Test: Erfolgreiche Anmeldung =?utf-8?Q?f=C3=BCr?= die
        Berufserkundung

0
投票

它看起来像一个报告错误[我不使用net / vb.net]

RFC2047 : Message Header Extensions for Non-ASCII Text

每个'编码字'必须代表整数个字符。多个八位字节字符可能不会在相邻的“编码字”之间分割。

© www.soinside.com 2019 - 2024. All rights reserved.