Как исправить ошибку «Невозможно установить соединение, поскольку целевая машина активно отказывала в этом» Ошибка при отправке электронной почты - PullRequest
0 голосов
/ 04 января 2019

Я пытаюсь отправить простое тестовое электронное письмо, чтобы проверить, как класс почты работает в C #, но при попытке вызвать smtp.send(message); я получаю следующую ошибку: SocketException: No connection could be made because the target machine actively refused it 173.194.207.109:587 Я осмотрел пакеты в wireshark (хотя по общему признанию, у меня нет знаний, чтобы разобраться в них), и похоже, что Google отправляет обратно пакет [RST, ACK] каждый раз, когда я пытаюсь отправить электронное письмо. Есть ли способ для дальнейшей диагностики этого?

var fromAddress = new MailAddress("FROM@gmail.com", "FROM NAME");
var toAddress = new MailAddress("TO@gmail.com", "TO NAME");
const string fromPassword = "password";
const string subject = "Subject";
const string body = "Body";

var smtp = new SmtpClient
{
    Host = "smtp.gmail.com",
    Port = 587,
    EnableSsl = true,
    DeliveryMethod = SmtpDeliveryMethod.Network,
    UseDefaultCredentials = false,
    Credentials = new NetworkCredential(fromAddress.Address, fromPassword)
};
using (var message = new MailMessage(fromAddress, toAddress)
{
    Subject = subject,
    Body = body
})
{
    smtp.Send(message);
}    

1 Ответ

0 голосов
/ 04 января 2019

Похоже, вы можете изменить значение port, потому что у вас есть EnableSsl = true,

Подключитесь к smtp.gmail.com через порт 465, если вы используете SSL. (Подключитесь к порту 587, если вы используете TLS.) Войдите в систему с именем пользователя и паролем Google для аутентификации для подключения с помощью SSL или TLS. Ссылки

Попробуйте:

var fromAddress = new MailAddress("FROM@gmail.com", "FROM NAME");
var toAddress = new MailAddress("TO@gmail.com", "TO NAME");
const string fromPassword = "password";
const string subject = "Subject";
const string body = "Body";

var smtp = new SmtpClient
{
    Host = "smtp.gmail.com",
    Port = 465, //or try: port = 587, or port = 25
    EnableSsl = true,
    DeliveryMethod = SmtpDeliveryMethod.Network,
    UseDefaultCredentials = false,
    Credentials = new NetworkCredential(fromAddress.Address, fromPassword)
};
using (var message = new MailMessage(fromAddress, toAddress)
{
    Subject = subject,
    Body = body
})
{
    smtp.Send(message);
}

Этот ответ StackOverflow также может быть хорошим справочным материалом для использования.

...