Я использую следующий код для отправки вложения электронной почты.Я использую 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как если бы оно было неправильно закодировано:
http://i.stack.imgur.com/gvNMV.png
В любом случае содержимое вложения не повреждено ("我 希望 這個 作品。").Затрагивается только имя вложения.
Ясно, что здесь я нахожу какое-то ограничение ... Может кто-нибудь сказать мне, что я делаю неправильно?
Обновить: Проблема возникает независимо от того, является ли клиент Gmail или Outlook 2010. Однако, когда клиентом является Gmail и имя файла> 13 символов, вложение также появляется в теле сообщения:
http://i.stack.imgur.com/DYtCN.png