这是一个损坏的主题行吗?

Is this a broken subject line?

使用 System.Net.Mail.MailMessage class 我创建了一封电子邮件。该电子邮件是德语的,需要包含变音符号 ü。为此,我将 object 的 SubjectEncoding 属性 声明为 Encoding.UTF8。 收到电子邮件后,我注意到 ü 在三个邮件应用程序(GMX 网络邮件)之一中已被两个 specials character 取代。它在 Office Outlook 和苹果邮件应用程序中有效

将下面的主题行插入 this decoder 时,问题会重现。

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

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

主题包含两部分,分别编码 header 的第一部分和第二部分。奇怪的是,它将主题一分为二的点位于 ü 的位置。

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

更新(感谢 AnFi's answer):你刚刚破坏了 inside ü 多字节字符的 base64 ,使它无效。

您要查找的 RFC 是 RFC 2047“MIME(多用途 Internet 邮件扩展)第三部分:消息 Header Non-ASCII 文本的扩展” .

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

这是在多字节字符之外损坏的 base64 编码:

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

这里有一个 Quoted-Printable 编码给你。我发现这些对于像德语这样偶尔使用 non-ASCII 个字符的语言更易读:

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

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

RFC2047 : Message Header Extensions for Non-ASCII Text

Each 'encoded-word' MUST represent an integral number of characters. A multi-octet character may not be split across adjacent 'encoded- word's.