Транзакция не удалась. Ответ сервера был: SMTP Host

Я пытался сделать простое приложение для отправки электронной почты, и я заблокирован с этой ошибкой, я не могу найти никого с этой проблемой (хотя я не знаю, что искать)

Итак, у меня возникает эта ошибка, когда я пытаюсь отправить свою электронную почту, она просто возвращает мне эту ошибку с именем моего SMTP-хоста,

Транзакция не удалась. Ответ сервера был: smtp.host.com

Если я смотрю на трассировку, она падает

в System.Net.Mail.SmtpConnection.GetConnection(ServicePoint servicePoint)

Вот пример кода, ничего особенного.

MailMessage mail = new MailMessage();
mail.From = new MailAddress(CurrentUser.email);
mail.Subject = txtSubject.Text;
mail.Body = txtMailBody.Text;

try
{
    foreach (ListItem user in lbSelectedUsr.Items)
    { 
        mail.To.Add(new MailAddress(user.email));
    }

    SmtpClient mailClient = new SmtpClient("smtp.host.com");
    mailClient.Send(mail);

    lblResultOK.Visible = true;
}
catch(Exception ex)
{
    lblResultOK.Visible = true;
}

Обратите внимание, что SMTP является поддельным для примера.

Я пробовал с недопустимым SMTP, и это дало мне другую ошибку, поэтому SMTP, похоже, в порядке, я также пытался ввести учетные данные, та же ошибка. Есть намек на то, что происходит?


person JsGarneau    schedule 08.08.2012    source источник
comment
вы пользуетесь обменом? и если да, настроен ли сервер на прием ретрансляции с IP-адреса, на котором вы запускаете код? Также убедитесь, что адреса электронной почты кажутся действительными. Попробуйте отключить цикл foreach и жестко закодировать адрес, а также жестко закодировать фиктивный адрес и посмотреть, сработает ли он тогда. это устранит адреса как проблему. Вы также можете попробовать IP-адрес почтового сервера, а не имя хоста.   -  person Brian    schedule 08.08.2012
comment
Я думаю, что я с обменом, меня переключили на этот новый проект, и я совершенно запутался в нем, я поспрашиваю, но я помню, что у моего компьютера были проблемы с подключением к локальному серверу, так что это может быть эта проблема. Я поместил электронные письма с жестким кодом на «Кому» и «От кого» - все тот же результат. Я не уверен, смогу ли я найти IP-адрес почтового сервера, мы используем SMTP нашего интернет-хоста.   -  person JsGarneau    schedule 08.08.2012
comment
Хорошо, очевидно, мы использовали неправильный SMTP, мы с Bell (Sympatico), и мы пытаемся использовать их открытый SMTP-сервер (не требуется аутентификация), который должен быть: smtp1.sympatico.ca, но это дает мне и еще более неясная ошибка, которая есть. {Невозможно прочитать данные из транспортного соединения: существующее соединение было принудительно закрыто удаленным узлом.}   -  person JsGarneau    schedule 08.08.2012
comment
похоже, проблема в том, что ваш smtp-сервер не принимает запрос на отправку электронной почты   -  person Brian    schedule 08.08.2012
comment
Сообщения об ошибках SMTP на стороне клиента намеренно расплывчаты. Если вы хотите выяснить, в чем заключается настоящая проблема, не тратя бесконечные часы на пробы и ошибки, вам нужно связаться с почтмейстером или администратором сервера, который с вами не разговаривает, и попросить его/ее проверить логи сервера. Вы можете получить некоторую дополнительную информацию, если сбросите весь объект ex в обработчик исключений.   -  person Terry Carmen    schedule 07.12.2019


Ответы (5)


Правильно ли настроена ваша конфигурация SMTP в файле Web.Config? Я бы сказал, попробуйте отправить образец электронной почты через host="smtp.gmail.com"

<system.net>
<mailSettings>
  <smtp deliveryMethod="Network" from="emailAddress">
    <network host="smtp.gmail.com" port="587" userName="emailAddress" password="password" defaultCredentials="false"/>
  </smtp>
</mailSettings>

person Apurav    schedule 08.08.2012
comment
Как было сказано выше, через Google все работало нормально. Проблема действительно выглядит так, как будто она исходит от нашего SMTP. - person JsGarneau; 08.08.2012

Код ниже должен быть размещен в web.config. Внимание: defaultCredentials="false"

<system.net>
<mailSettings>
  <smtp from="[email protected]">
    <network host="mail.yourdomain.com" userName="[email protected]" password="your password" port="587" defaultCredentials="false"/>
  </smtp>
</mailSettings>

person Engin Kamarot    schedule 12.11.2015

Попробуйте отправить через Google smtp, и если все в порядке, измените его на информацию о вашем smtp-сервере. Если вы это сделаете, и если ваша проблема все еще не устранена, вы должны проверить свой smtp-сервер.

person RAM    schedule 08.08.2012
comment
Хорошо, это работало с SMTP от Google. Тогда я проверю свой SMTP. - person JsGarneau; 08.08.2012

Сервер не принимает ретрансляцию с компьютера, на котором запущено ваше приложение. Настройте сервер соответствующим образом или запустите код на машине, которая уже настроена для ретрансляции (обычно все компьютеры в домене; я полагаю, что ваш компьютер принадлежит к другому домену, чем SMTP-сервер).

person Michal B.    schedule 19.02.2013

person    schedule
comment
попробуйте это, если на вашем сервере есть учетные данные, тогда вы должны пройти учетные данные, используя mailClient.NetworkCredential(UserName,Password) после SmtpClient mailClient = new SmtpClient(abc.host.com); - person Mahesh Kakad; 21.11.2014
comment
Ваш ответ является копией примера кода, приведенного в вопросе. Пожалуйста, отредактируйте свой ответ, если вы хотите включить информацию из своего комментария. - person Michał Ciuba; 21.11.2014