c# - 使用 MailKit,带有 unicode 文件名的附件在 Outlook 中显示为 "untitled attachment"

标签 c# unicode smtp email-attachments mailkit

我们在应用程序中使用 MailKit 向用户发送电子邮件。这些电子邮件通常带有带有 Unicode 或长文件名的附件。某些电子邮件客户端,例如 Outlook(使用 POP 或 IMAP 时)或 Outlook Express,无法处理 RFC 2231,结果是附件的名称为“无标题附件”。

有没有办法为附件文件名发送支持 RFC 2047(编码字)的邮件(使用 MailKit)?一个可能的解决方案是将 RFC 2231 保留在内容处置中的文件名中,但将内容类型中的编码字编码名称参数用作后备。支持这样的东西吗?

最佳答案

我刚刚添加了对 MimeKit 使用 rfc2047 编码的支持。

现在有两种方法可以控制用于参数值的编码方法。

第一种方式是在每个个体上设置编码方式Parameter :

param.EncodingMethod = ParameterEncodingMethod.Rfc2047;

第二种方式是在FormatOptions上设置默认的参数编码方式用于写出消息和/或 MIME 部分:
var options = FormatOptions.Default.Clone ();
options.ParameterEncodingMethod = ParameterEncodingMethod.Rfc2047;

message.WriteTo (options, stream);

我将尝试发布一个新的 MimeKit 1.3.0-beta3 以尽快使用此功能进行 nuget。

关于c# - 使用 MailKit,带有 unicode 文件名的附件在 Outlook 中显示为 "untitled attachment",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33598022/

相关文章:

C#,编写更长的方法还是更短的方法?

c# - 如何自定义 tcp 端口号而不是默认值 (80)

python - 循环打印 Unicode 元素

java - 验证队列消息

iphone - 应用程序因 SKPSMTPMessage 类而崩溃

smtp - 使用 Office365 发送 javamail

c# - 从另一个单独的 .NET 程序访问一个 .NET 程序中的变量

c# - 在 Compact Framework 中设置 LastWriteTime

python UnicodeEncodeError > 我怎样才能简单地删除麻烦的 unicode 字符?

haskell - Prelude.writeFile 带有中文文件名