Отправка электронной почты через Amazon SES SMTP ошибка - PullRequest
9 голосов
/ 29 декабря 2011

Я пытаюсь отправить электронное письмо через новую SMTP-службу Amazon SES, используя встроенную в .NET SmtpClient

Код:

    var emailClient = new SmtpClient("email-smtp.us-east-1.amazonaws.com", 465);
                    emailClient.EnableSsl = true;
....
emailClient.Send(message);

Я получаю исключение:

Невозможно прочитать данные из транспортного соединения: net_io_connectionclosed

Google говорит, что эта ошибка означает, что я не могу связаться с SMTP-сервером. Они требуют TLS, который, как я полагаю, достигается с помощью свойства «EnableSsl».

Кто-нибудь знает, как мне нужно настроить свой код, чтобы он работал?

EDIT:

Полагаю, я закрою этот вопрос. Нет, с SmtpClient невозможно сделать то, что я хочу

https://forums.aws.amazon.com/thread.jspa?messageID=302112&#302112

Ответы [ 8 ]

9 голосов
/ 29 марта 2012

Это можно сделать, указав порт 587.

<system.net>
   <mailSettings>
     <smtp deliveryMethod="Network">
       <network enableSsl="true" port="587" host="email-smtp.us-east-1.amazonaws.com" password="[password]" userName="[username]"/>
     </smtp>
   </mailSettings>
</system.net>

При этом в качестве конфигурации вы можете использовать SmtpClient, как обычно

var client = new SmtpClient();
var message = new MailMessage(fromemail, recipient, subject, body);
client.Send(message);
5 голосов
/ 25 июля 2012

Я могу подтвердить, что он работает с STARTTLS и портом 587.

Надеюсь, это поможет

5 голосов
/ 03 января 2012

Согласно Amazon - он не поддерживается, как мы привыкли.

https://forums.aws.amazon.com/thread.jspa?messageID=302112&#302112

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

4 голосов
/ 16 октября 2012

Как упоминает masterfu в своем блоге, Amazon SES начал поддерживать STARTTLS в марте 2012 года.

Ниже приведен код, который я использовал для работы SMTP с Amazon.

  string username = ConfigurationManager.AppSettings["AWSSMTPUser"];
  string password = ConfigurationManager.AppSettings["AWSSMTPPass"];

  SmtpClient smtp = new SmtpClient();
  smtp.Host = "email-smtp.us-east-1.amazonaws.com";
  smtp.Port = 587;
  smtp.UseDefaultCredentials = false;
  smtp.Credentials = new NetworkCredential(username, password);
  smtp.EnableSsl = true;

  smtp.Send(mail);
3 голосов
/ 19 апреля 2012

Теперь SES поддерживает STARTTTLS:

Исходящий сервер (SMTP) - 25, 587 или 2587 (для подключения с использованием STARTTLS) или 465 или 2465 (для подключения с использованием TLS Wrapper).

Пруф ссылка: http://s3.amazonaws.com/awsdocs/ses/latest/ses-dg.pdf

1 голос
/ 06 марта 2012

Для тех, кто хочет отправить с нормальным .Net SMTPClient.Это возможно, поскольку вам просто нужна оболочка.

Вот ссылка со всей информацией:

http://docs.amazonwebservices.com/ses/latest/DeveloperGuide/SMTP.Client.html

Установите программное обеспечение для туннелирования и настройте его, как описано в разделессылка тогда так же просто, как:

System.Net.Mail.SmtpClient sc = new SmtpClient();
sc.Host = host;
sc.Port = port;
sc.Credentials = new NetworkCredential(username, password);
sc.Send(mm);
0 голосов
/ 02 июня 2016

Попробуйте использовать номер порта. 2587, другой порт 25, 425, 587 dint работают для моего случая.

0 голосов
/ 29 декабря 2011

Вы установили defaultCredentials = "false" в web.config?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...