我使用以下代码发送电子邮件附件。我正在使用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个字符,附件也出现在邮件正文中:
答案 0 :(得分:3)