Отправка почты работает локально, но не на сервере? - PullRequest
2 голосов
/ 19 декабря 2011

Этот код работает локально, но когда я загружаю его на свой сервер на Godaddy, он не отправляет электронную почту.Есть идеи, почему это не работает на их сервере?Что мне нужно изменить?

try {
    MailMessage mail = new MailMessage();
    SmtpClient SmtpServer = new SmtpClient("smtp.gmail.com");

    mail.From = new MailAddress("Myemail@gmail.com");
    mail.To.Add("Myemail@gmail.com");
    mail.Subject = "New sign up";
    mail.Body = "New member";

    SmtpServer.Port = 587;
    SmtpServer.Credentials = new System.Net.NetworkCredential("Myemail@gmail.com", "**Mypass**");
    SmtpServer.EnableSsl = true;

    SmtpServer.Send(mail);
} catch(Exception ex) {
    throw ex;
}

Ответы [ 4 ]

2 голосов
/ 19 декабря 2011

При отправке изнутри сайта, размещенного на Godaddy, вам необходимо выполнить несколько действий. Используйте их сервер ретрансляции для отправки сообщения (это не сработает на вашем компьютере разработчика, вам нужно будет проверить его вживую после загрузки). Здесь - информация о сервере ретрансляции. Также убедитесь, что адрес «от» является адресом электронной почты в том же домене. Я обычно использую то же самое, что и адрес. См. здесь для получения информации о том, почему это необходимо.

Это код, который я использую для отправки с сайта внутри Godaddy:

        btnSend.Disabled = true;

        const string serverHost = "relay-hosting.secureserver.net";
        var msg = new MailMessage(toAddress, toAddress);
        msg.ReplyTo = new MailAddress(emailFrom);

        msg.Subject = subject;
        msg.Body = emailBody;
        msg.IsBodyHtml = false;

        try
        {
            var smtp = new SmtpClient();
            smtp.Host = serverHost;
            smtp.Credentials = new System.Net.NetworkCredential("account", "password");
            smtp.Send(msg);
        }
        catch (Exception e)
        {
            //Log the errors so that we can see them somewhere
        }
2 голосов
/ 19 декабря 2011

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

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

Если у вас есть ssh-доступ к серверу, попробуйте telnet smtp.google.com через 25 и 465 портов. Если вы получаете тайм-аут, то вы, вероятно, защищены от подключения к этим портам за пределами определенного диапазона IP-адресов. Порт 587 для TLS. Когда вы используете SSL, попробуйте порт 465.

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

Вам необходимо отправить письмо по электронной почте через серверы Godaddy SMTP.Я испытал ту же проблему с ними, прежде чем я думаю.Я считаю, что они дают инструкции о том, как войти через их FAQ.

...