我们在应用程序中使用MailKit向用户发送电子邮件。这些电子邮件通常具有Unicode或长文件名的附件。某些电子邮件客户端,如Outlook(使用POP或IMAP时)或Outlook Express,无法处理RFC 2231,结果是附件的名称为"无标题附件"。
有没有一种方法可以发送支持RFC 2047(编码字)的附件文件名邮件(使用MailKit)?一个可能的解决方案是在内容处理中将RFC 2231保留在文件名中,但在内容类型中使用编码字编码的名称参数作为后备。这样的事情得到支持了吗?
我刚刚为MimeKit添加了对使用rfc2047编码的支持。
现在有两种方法可以控制用于参数值的编码方法。
第一种方法是在每个单独的Parameter
:上设置编码方法
param.EncodingMethod = ParameterEncodingMethod.Rfc2047;
第二种方法是在用于写出消息和/或MIME部分的FormatOptions
上设置默认参数编码方法:
var options = FormatOptions.Default.Clone ();
options.ParameterEncodingMethod = ParameterEncodingMethod.Rfc2047;
message.WriteTo (options, stream);
我将尝试用这个功能很快向nuget发布一个新的MimeKit 1.3.0-beta3。