Кодировка кириллицы в письмах на c #

Я пытаюсь отправить электронное письмо через C # и использую следующий код:

public static bool SendSMTPMail(string smtphost, int smtpport, string smtplogin, string smtppassword, string from, string to, string subject, string body, bool isHtml)
{
  try
  {               
    using (MailMessage message = new MailMessage(from, to, subject, body))
    {
      message.IsBodyHtml = isHtml;
      message.SubjectEncoding = System.Text.Encoding.UTF8;
      message.BodyEncoding = System.Text.Encoding.UTF8;

      SmtpClient mailClient = new SmtpClient(smtphost, smtpport);
      mailClient.EnableSsl = false;
      mailClient.DeliveryMethod = SmtpDeliveryMethod.Network;
      mailClient.Credentials = new NetworkCredential(smtplogin, smtppassword);

      mailClient.Send(message);
      return true;
    }
  }
  catch
  {
    return false;
  }
}

Он отлично работает, когда письма получены в Windows, но когда пользователь пытается прочитать их в MacOS, заголовок темы имеет неправильную кодировку. Если я установлю кодировку темы на Windows-1251, она будет работать хорошо, но только для кириллицы, и я тоже отправлю азиатскую ...

Как я могу отправлять электронные письма, используя чистый Юникод?

И второй вопрос - если я добавлю к письму какое-то вложение, оно будет добавлено с дополнительными файлами - "filelist.xml" и "header.htm".

Как от них избавиться?

Спасибо!


person JleruOHeP    schedule 29.03.2012    source источник
comment
В Outlook тема выглядит так Subject: =? Utf-8? B? QnVzaW5lc3MgU3R1ZGlvINC00LvRjyDQv9GA0L7RhNC10YHR? = =? Utf-8? B? GdC40L7QvdCw0LvQvtCyLHDQstC4? Вроде как ошибка с разбиением ...   -  person JleruOHeP    schedule 29.03.2012
comment
Может ли пользователь MacOS узнать, какую кодировку считает Mac? Какую программу электронной почты они используют? Если они используют веб-почту, предложите им установить автоматическую кодировку текста в браузере.   -  person Mr Lister    schedule 29.03.2012
comment
MAcOS использует автоматическое кодирование, и это не помогает. Они также пытались найти правильную кодировку, проверяя все возможности, но это тоже не помогает.   -  person JleruOHeP    schedule 29.03.2012
comment
Дополнительная информация: если тема достаточно длинная и разделена на 3 =? Utf-8? B? QWE ...? =, То первые 2 раздела отображаются как QWE ... и последний декодируется правильно   -  person JleruOHeP    schedule 29.03.2012


Ответы (2)


Лучшее решение - создать структуру или автоматизацию, которая вводит в систему различные кодировки в соответствии с форматом приемника:

  • общий utf8
  • iso xxx для кириллицы
  • iso xxy для китайского

и так далее.

person Gian    schedule 29.03.2012
comment
Вы можете объяснить, что вы предлагаете? - person JleruOHeP; 29.03.2012
comment
Конечно, я предлагаю вам иметь несколько настроек кодировки вместо одной: я думаю, вы знаете, когда система отправляет электронное письмо на кириллице или китайском языке, или в долларах США / евро, поэтому вы можете использовать корпус переключателя или структуру адаптера для наложить другую кодировку из-за ресивера, надеюсь понятно :) - person Gian; 29.03.2012

По поводу моего второго найденного вопроса это, и это помогает

По вопросам кодирования я предпочитаю отправлять письма с темами только на английском языке ...

person JleruOHeP    schedule 06.04.2012