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

标签 .net vb.net email rfc

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

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

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

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

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

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

最佳答案

更新(感谢 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

关于.net - 这是一个损坏的主题行吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49011647/

相关文章:

c# - 将 Azure Function 发布为 NuGet 包(或从外部程序集加载函数)

vb.net - 有什么方法可以将ParamArray值作为byRef处理,以便可以对其进行更新?

zend-framework - Zend_Mail 不会向发件人地址发送密件抄送

javascript - API key 不以 "SG."SendGrid 开头

c# - 如何将.Net3.5 dll 添加到.Net2.0 工程中?

c# - 来自 C# 进程类的无效操作异常

asp.net - 非 ASCII 字符需要 web.config 吗?

c# - 在 VB、C# 中使用 Linq 处理匿名类型

c# - mdi 子窗体最大化窗口状态 - BorderStyle

javascript - 如何在 Web 应用程序中显示 HTML 电子邮件?