Как установить имя файла с китайскими символами в программировании на C # SmtpClient? - PullRequest
3 голосов
/ 09 декабря 2010

мой код такой, как показано ниже:

ContentType ct = new ContentType();
ct.MediaType = MediaTypeNames.Application.Octet;
ct.Name = "这是一个很长的中文文件名希望能用它在附件名中.Doc";
Attachment attach = new Attachment(stream, ct);

, но полученное вложение не с правильным китайским именем файла, и я обнаружил, что ct.Name стало "=? Utf-8? B? 6L + Z5piv5LiA5Liq5b6I6ZW/ 55qE5Lit5paH5paH5Lu25ZCN5biM5pyb? = \ R \ n =? Utf-8? B? 6IO955So5a6D5Zyo6ZmE5Lu25ZCN5Lit? = "В отладчике VS2010.

* * * * *1005* * * * *.

Ответы [ 3 ]

2 голосов
/ 09 декабря 2010

Можете ли вы попробовать:

Attachment att = new Attachment(@"c:\path to file\somename.txt",    
System.Net.Mime.MediaTypeNames.Application.Octet);

//this itself should work.
att.Name = "история-болезни.doc";  // non-english filename

//if the above line doesn't make it work, try this.
att.Name = System.Web.HttpUtility.UrlEncode(att.Name, System.Text.Encoding.UTF8);
0 голосов
/ 10 декабря 2010

наконец, я нашел рабочую среду, в соответствии с RFC 2047, разделитель может быть CRLF или SPACE между 'ecoded-word', и C # использует CRLF в качестве разделителя, но клиент NOTES / Gmail не может его интерпретировать, ипосле того, как я заменил CRLF на SPACE, он хорошо работает в NOTE / Gmail.

Спасибо, Руп, твоя ссылка на RCF2047 поможет мне!

0 голосов
/ 09 декабря 2010

Нет, это правильное значение в отладчике.Имена файлов содержимого MIME должны всегда ASCII, и поэтому для передачи должны быть закодированы другие наборы символов (см. RFC 2047 ).

Это представление ваших китайских символов в кодировке UTF-8 в кодировке Base-64 -это то, что означает префикс =?utf8?B?.Почтовый клиент получателя должен декодировать его обратно в правильные символы.

Редактировать: упс, я пропустил, вы говорили, что полученное имя файла неверно.Я предлагаю вам попробовать по электронной почте различным почтовым клиентам выяснить, связана ли проблема с получателем, и сравнить заголовки сообщений с письмом с правильным именем файла, если вы можете сгенерировать его из другого клиента, но я не уверен, что предложить дальшечто.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...