超过13个字符时,附件文件名无法正确编码/解码

时间:2011-06-22 07:27:40

标签: .net email

我使用以下代码发送电子邮件附件。我正在使用C#,.NET 4.0,BPOS Exchange服务器发送。

var message = new MailMessage("duncanbayne@example.com", "duncanbayne@example.com")
    {
        Subject = "Test Message"
    };
var ms = new MemoryStream(Encoding.UTF8.GetBytes("我希望這個作品。"));
var attachment = new Attachment(ms, "檢", "text/plain")
        {
            TransferEncoding = TransferEncoding.Base64
        };
message.Attachments.Add(attachment);

var server = new SmtpClient("smtpserver", 25);
server.Send(message);

这很好用。如果我逐渐增加文件名的长度,事情就会继续工作,直到&包括文件名长度为13个字符的点(“检验检验检验检验检验检索”):

http://i.stack.imgur.com/lm1Ey.png

但是,如果我将文件名长度增加到14个字符(“检查检检检验检检检检检”),则会出现错误,文件名出现在Outlook中,好像它是错误的en / de -coded:

http://i.stack.imgur.com/gvNMV.png

在任何一种情况下,附件内容都是完整的(“我希望这个作品。”)。只有附件的名称会受到影响。

显然我在这里遇到某种限制......有人可以告诉我我做错了吗?

更新:无论客户端是Gmail还是Outlook 2010,都会出现问题。但是,当客户端是Gmail且文件名为>时13个字符,附件也出现在邮件正文中:

http://i.stack.imgur.com/DYtCN.png