Я использую 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, List
1 ccAddresses, List
1 bccAddresses, String Subject, RequestArguments args, String mailField, Boolean showOptout, String body, List1 attachments, String html, List
1 contact, String replyTo, String returnPath, String contactId, String callListId) в c:\inetpub\wwwroot\TalentRover\App_Code\Blogic. cs: строка 236Exception message : Expected parameter value, got "è"
ссылка на код целиком
Blogic.CallAmazonSES
, а неSendRawCustomEmail
. Опубликуйте код, который фактически генерирует, и полную строку исключения. Вы можете легко получить его с помощьюException.ToString()
. Это будет включать сообщение, стек вызовов и любые внутренние исключения. - person Panagiotis Kanavos   schedule 09.07.2018SmptClient
, когда код действительно хочет общаться с AWS SES? - person Panagiotis Kanavos   schedule 09.07.2018