Ожидаемое значение параметра, полученное "è" при отправке электронного письма с использованием Amazon SES в C#

Я использую Amazon SES для отправки электронных писем с вложениями. Если я прикрепляю вложение с английскими именами, оно работает правильно, но если я прикрепляю китайские резюме, оно выдает ошибку Ожидаемое значение параметра, получено "è. Описание ошибки неясно, и я пытался кодировать в разных форматах, но получаю ту же ошибку.

Ниже приведен код, который я использую для создания почтового сообщения и отправки

public static MailResponse SendRawEmail(String from, List<string> to,List<string> ccAddresses,List<string> bccAddresses, String Subject, string body=null,List<string> attachments=null, String html = null,Salesforce.Contact[] contacts=null, String replyTo = null, String returnPath = null)
{
    MailResponse mresponse = new MailResponse();
    try
    {
        MailMessage mailMessage = new MailMessage();
        mailMessage.From = new MailAddress(from);


       mailMessage.Body = body;

        mailMessage.Subject = Subject;
        mailMessage.SubjectEncoding = Encoding.UTF8;
        foreach (string attachment in attachments)
            mailMessage.Attachments.Add(new System.Net.Mail.Attachment(attachment));

        if (body != null)
        {
            AlternateView plainView = AlternateView.CreateAlternateViewFromString(body, Encoding.UTF8, "text/plain");
            mailMessage.AlternateViews.Add(plainView);
        }

        if (html != null)
        {
            AlternateView htmlView = AlternateView.CreateAlternateViewFromString(html, Encoding.UTF8, "text/html");
            mailMessage.AlternateViews.Add(htmlView);
        }

        RawMessage rawMessage = new RawMessage();
         Amazon.SimpleEmail.IAmazonSimpleEmailService ses;
        if(ConfigurationManager.AppSettings["AWSRegion"]=="USWest2")
         ses = AWSClientFactory.CreateAmazonSimpleEmailServiceClient(ConfigurationManager.AppSettings["AWSAccessKey"], ConfigurationManager.AppSettings["AWSSecretKey"],Amazon.RegionEndpoint.USWest2);
        else
            ses = AWSClientFactory.CreateAmazonSimpleEmailServiceClient(ConfigurationManager.AppSettings["AWSAccessKey"], ConfigurationManager.AppSettings["AWSSecretKey"],Amazon.RegionEndpoint.USEast1);

        foreach (String toAddress in to)
        {
            mailMessage.To.Add(new MailAddress(toAddress));

            using (MemoryStream memoryStream = ConvertMailMessageToMemoryStream(mailMessage))
            {
                rawMessage.Data = memoryStream;
            }
            SendRawEmailRequest request = new SendRawEmailRequest();
            request.RawMessage = rawMessage;
            request.Source = from;
            request.Destinations.Add(toAddress);
            CallAmazonSES(request, ses);
            request.Destinations.Clear();
            mailMessage.To.Clear();
        }
        foreach (String ccAddress in ccAddresses)
        {
            mailMessage.CC.Add(new MailAddress(ccAddress));
            using (MemoryStream memoryStream = ConvertMailMessageToMemoryStream(mailMessage))
            {
                rawMessage.Data = memoryStream;
            }
            SendRawEmailRequest request = new SendRawEmailRequest();
            request.RawMessage = rawMessage;
            request.Source = from;
            request.Destinations.Add(ccAddress);
            CallAmazonSES(request, ses);
            request.Destinations.Clear();
            mailMessage.CC.Clear();
        }

        List<List<string>> bccAddressesList = Split(bccAddresses);
        foreach (List<String> bcclist in bccAddressesList)
        {
            using (MemoryStream memoryStream = ConvertMailMessageToMemoryStream(mailMessage))
            {
                rawMessage.Data = memoryStream;
            }
            SendRawEmailRequest request = new SendRawEmailRequest();
            request.RawMessage = rawMessage;
            request.Source = from;

            request.Destinations.AddRange(bcclist);

            CallAmazonSES(request, ses);
        }


        mresponse.Response = "Mail sent succesfully";

    }
   catch (Exception ex)
    {
        mresponse.Response = "Mail failed due to " + ex.Message;
    }
    return mresponse;
}

Трассировка стека: в Amazon.Runtime.AmazonWebServiceClient.HandleHttpWebErrorResponse(AsyncResult asyncResult, WebException we) в Amazon.Runtime.AmazonWebServiceClient.getResponseCallback(результат IAsyncResult) в Amazon.Runtime.AmazonWebServiceClient.endOperation[T](результат IAsyncResult) в Amazon.SimpleEmail. AmazonSimpleEmailServiceClient.SendRawEmail(запрос SendRawEmailRequest) в Blogic.CallAmazonSES(MailMessage mailMessage, RawMessage rawMessage, String from, String to, IAmazonSimpleEmailService ses) в c:\inetpub\wwwroot\TalentRover\App_Code\Blogic.cs:строка 371 в Blogic.SendRawCustomEmail( String from, List1 ccAddresses, List1 bccAddresses, String Subject, RequestArguments args, String mailField, Boolean showOptout, String body, List1 attachments, String html, List1 contact, String replyTo, String returnPath, String contactId, String callListId) в c:\inetpub\wwwroot\TalentRover\App_Code\Blogic. cs: строка 236

   Exception message : Expected parameter value, got "è"

ссылка на код целиком


person Lax_me    schedule 09.07.2018    source источник
comment
полный текст исключения и стек вызовов с указанием номера строки? возможно связано   -  person Cee McSharpface    schedule 09.07.2018
comment
Пожалуйста, добавьте в свой вопрос сообщение об исключении и трассировку стека, которые помогут вам быстро получить ответы,   -  person Mihir Dave    schedule 09.07.2018
comment
@MihirDave добавляет сюда трассировку стека и сообщение об исключении   -  person Lax_me    schedule 09.07.2018
comment
@Lax_me стек вызовов говорит, что исключение было вызвано вашим методом Blogic.CallAmazonSES, а не SendRawCustomEmail. Опубликуйте код, который фактически генерирует, и полную строку исключения. Вы можете легко получить его с помощью Exception.ToString(). Это будет включать сообщение, стек вызовов и любые внутренние исключения.   -  person Panagiotis Kanavos    schedule 09.07.2018
comment
@Lax_me кстати, вы можете отладить этот код локально, чтобы проверить, что не так. Если тело сообщения было недействительным, код все равно не будет работать.   -  person Panagiotis Kanavos    schedule 09.07.2018
comment
@PanagiotisKanavos Я выполнял отладку на своем локальном компьютере и получаю исключение, когда вызываю метод Amazon SDK SendRawEmail SendRawEmailResponse response = ses.SendRawEmail(request);   -  person Lax_me    schedule 09.07.2018
comment
Получение этой ошибки только тогда, когда я отправляю вложение на китайском языке, и я не получаю исключения, если я отправляю только тело или вложения на английском языке.   -  person Lax_me    schedule 09.07.2018
comment
скопировал полный код сюда gist.github.com/lmedikonda/ec1315517bef421c49dd4912cb52e547   -  person Lax_me    schedule 09.07.2018
comment
@Lax_me и? Куда бросил? Что было полным исключением? Как выглядело сообщение? Используйте простой пример. Одного получателя, одного сообщения было бы достаточно, чтобы воспроизвести это. Хотя проблема почти наверняка в плохой конвертации в UTF8. В любом случае, это слишком, слишком много кода для отправки сообщения электронной почты. Почему здесь вообще появляется SmptClient, когда код действительно хочет общаться с AWS SES?   -  person Panagiotis Kanavos    schedule 09.07.2018