Работая над проектом, который отправляет файлы с международными именами по электронной почте, я столкнулся с необычной проблемой.если я присоединяю только к имени файла US-ASCII, я могу получить лучше, чем 200 символов без ошибок.
Если я добавлю расширенный символ, он кодируется в UTF-8, а длина до того, как он станет интересной, оченьмаленький (<40 символов).Чтобы определить фанки ... вот пример имени файла после того, как он испортился: </p>
=utf-8BSU5GT1JNw4FUSUNBX0ltcGFjdF9Bc3Nl
это похоже на строку в кодировке UTF8 с инструкцией декодирования UTF-8 или границей mime ... не уверен, какой.
Кто-нибудь видел это раньше - и каковы правила / ограничения имен файлов - я пытался отправить файл по электронной почте вручную через outlook, и он обрабатывает его, поэтому я не думаю, что это ограничение MIME.
Пример кода:
class Program
{
private const string DOMAIN = "foobar.com";
private const string SMTPHOST = "mail." + DOMAIN;
private const string FROM = "chadwick.posey@" + DOMAIN;
private const string TO = FROM;
static void Main(string[] args)
{
MailMessage msg = new MailMessage(FROM, TO, "Subject", "Body");
string path = Path.GetTempPath();
string name = "AAAAAA_AAAAAAAAAAAA_AAAAAAA_AAAA - IIIIIII CCCCCCCCCC DD IIIIIIÁIIII_20111018_091327.pptx";
File.WriteAllText(path + "\\" + name, "blah");
Attachment att = new Attachment(path + "\\" + name, new ContentType("application/vnd.openxmlformats-officedocument.presentationml.presentation"));
msg.Attachments.Add(att);
SmtpClient client = new SmtpClient(SMTPHOST, 25);
client.Send(msg);
}
}
Я пробовал (пока) - установил кодировку для вложения. Имя кодирования UTF8 и UTF32, ни сработало.Задать ContentDisposition.FileName для вложения не удается, поскольку в нем не используются только символы US-ASCII.
Есть предложения о том, как включить в него полное имя файла с ударными / расширенными символами в такте?
Спасибо, Чедвик