C# Файл вложения и MailMessage Arabi c символ - PullRequest
1 голос
/ 30 марта 2020

У меня проблема при отправке файла вложения, содержащего арабские c символы, которые отображаются как ???? для имени файла. Однако эта проблема не появляется, если имя файла Engli sh. Я пытался использовать UTF-8 для кодирования, но не работал.

    private static void GenerateAndSendMail(string subject, string body, List<string> filesFullPath = null)
    {
        try
        {
            var mailMessage = new MailMessage();
            mailMessage.From = new MailAddress(MyAppConfigService.CurrentUser.Email);
            mailMessage.Subject = subject;
            mailMessage.IsBodyHtml = true;
            mailMessage.Body = body;
            mailMessage.SubjectEncoding = Encoding.Unicode;
            mailMessage.HeadersEncoding = Encoding.Unicode;
            mailMessage.BodyEncoding = Encoding.Unicode;

            if (filesFullPath != null && filesFullPath.Count > 0)
            {
                foreach (var item in filesFullPath)
                {
                    var Attachment = new Attachment(item);
                    Attachment.NameEncoding = Encoding.Unicode;
                    mailMessage.Attachments.Add(Attachment);
                }
            }
            //save the MailMessage to the filesystem
            var filename = Path.GetTempPath() + "mymessage.eml";
            mailMessage.Save(filename);
            //Open the file with the default associated application registered on the local machine
            Process.Start(filename);
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }

1 Ответ

2 голосов
/ 31 марта 2020

После более чем 6 часов исследований на inte rnet и пробных кодировках другого типа, таких как UTF-8, UTF-16 и Unicode, я нашел решение.

Проблема заключалась в кодировке вложений, он не смог правильно закодировать арабский c символ, и результат кодирования неверен. Решение заключается в добавлении кода строки ниже под NameEncoding:

 Attachment.ContentType.CharSet = "UTF-8"; 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...