Назад | Перейти на главную страницу

использование самозаверяющего сертификата с Amazon SES

Я настраиваю Amazon Simple Email Service, Я перехожу к делу, когда пытаюсь отправить электронное письмо, и получаю сообщение об ошибке:

SMTP-серверу требуется безопасное соединение, иначе клиент не прошел аутентификацию. Ответ сервера: требуется аутентификация.

Поэтому я хотел бы использовать самозаверяющий сертификат с использованием IIS 8, но пока я его реализовал, и все еще получаю ту же ошибку.

<mailSettings>
      <smtp from="emal@email.com" deliveryMethod="Network" >
        <network
          host="my-amazon-host.com"
          port="25"
          defaultCredentials="false"
          enableSsl="true"
          userName="my-user-name"
          password="my-password" />
      </smtp>
</mailSettings>

заранее спасибо!

Я читаю этот:

Библиотеки TLS электронной почты .NET поддерживают только STARTTLS, который SES не поддерживает сегодня. Мы поддерживаем так называемую «TLS Wrapper» или аутентификацию SMTPS. Я могу понять, насколько это расстраивает, но вы можете использовать OpenSSL в качестве обходного пути и туннелировать через это программное обеспечение, работающее на вашем компьютере, для использования .NET для программирования для нашей конечной точки SMTP.

поэтому я решил создать собственную реализацию smtp с помощью amazon SDK:

        var smtpSection = (SmtpSection)ConfigurationManager.GetSection("system.net/mailSettings/smtp");
        var toAddresses = email.To.Select(mailAddress => mailAddress.Address).ToList();
        var destination = new Destination {ToAddresses = toAddresses};
        var subject = new Content(email.Subject);
        var textBody = new Content(email.Body);
        var body = new Body(textBody);
        var message = new Message(subject,body);
        var request = new SendEmailRequest(smtpSection.From, destination, message);
        Amazon.RegionEndpoint region = Amazon.RegionEndpoint.USEast1;
        var client = new AmazonSimpleEmailServiceClient(region);

        try
        {
            client.SendEmail(request);

        }
        catch (Exception ex)
        {
            //TODO: logger.
            throw;
        }
        finally 
        {
            email.Dispose();
            client.Dispose();
        }

а также вам необходимо настроить политику для вашего пользователя в Iam со следующими разрешениями:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "---------",
      "Effect": "Allow",
      "Action": [
        "ses:SendEmail",
        "ses:SendRawEmail"
      ],
      "Resource": [
        "*"
      ]
    }
  ]
}

и не забудьте добавить настройки Amazon в приложение или веб-конфигурацию:

  <add key="AWSAccessKey" value="-----------------"/>
  <add key="AWSSecretKey" value="-----------------"/>

Я надеюсь, что это поможет кому-нибудь еще. Спасибо!