не удалось отправить письмо в asp.net с помощью учетной записи Gmail - PullRequest
0 голосов
/ 16 марта 2011

Можем ли мы использовать учетную запись gmail для отправки электронной почты на веб-сайте asp.net с * localhost * (локальный компьютер)?Я пытаюсь, но безуспешно.Он хорошо работает на хостинге, но не работает на моей машине.

У меня Windows Server 2003 на моей машине, я добавил порты 587 и 465 в брандмауэр в исключениях.В моей учетной записи Gmail я также включил POP и IMAP.Некоторые люди предлагают использовать порт 465, а другие говорят, что следует использовать порт 587.Я попробовал и то, и другое, и ниже был мой результат:

  1. Используя порт 465, требуется время и, наконец, выдается сообщение о том, что истек срок действия операции.falure
  2. Используя порт 587, это не займет время, покажите сообщение «Отказ отправителя электронной почты» с внутренним ожиданием «Невозможно установить соединение, поскольку целевая машина активно отказала ему 72.14.213.109:587»

Ниже приведен мой код, укажите, где я не прав или что мне следует делать.

спасибо

public static bool SendMail(string gMailAccount, string password, string to, string subject, string message)
{
    try
    {
        NetworkCredential loginInfo = new NetworkCredential(gMailAccount, password);
        MailMessage msg = new MailMessage();
        msg.From = new MailAddress(gMailAccount);
        msg.To.Add(new MailAddress(to));
        msg.Subject = subject;
        msg.Body = message;
        msg.IsBodyHtml = true;
        SmtpClient client = new SmtpClient("smtp.gmail.com");
        client.EnableSsl = true;
        client.UseDefaultCredentials = false;
        client.Credentials = loginInfo;
        client.Port = 587;
        client.Send(msg);

        return true;
    }
    catch (Exception e)
    {

        return false;
    }

}

Ответы [ 3 ]

0 голосов
/ 16 марта 2011

Попробуйте это: add:

 client.DeliveryMethod = SmtpDeliveryMethod.Network;

Если это не поможет, ваш почтовый адрес может быть неполным, используйте

var fromAddress = new MailAddress("from@gmail.com", "From Name"); 

и в учетных данных используйте

Credentials = new NetworkCredential(fromAddress.Address, ....

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

0 голосов
/ 16 марта 2011

Этот SmtpClient всегда работал для меня:

new SmtpClient
     {
        Host = "smtp.gmail.com",
        Port = 587,
        EnableSsl = true,
        UseDefaultCredentials = false,
        Credentials = new NetworkCredential("noreply@my_domain.com", "password")
     };

И он совпадает с вашим.

Удалось ли вам связаться с smtp.gmail.com через порт 587 через любое другое приложение?Может быть, Telnet на этом порту?Я думаю, что это, вероятно, проблема в сети, хотя вы заявляли, что ваш брандмауэр был широко открыт, это не единственный переход между вами и Google.

0 голосов
/ 16 марта 2011

Я использую smtp.yandex.com.Может потребоваться изменить настройки в вашей учетной записи Gmail.

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