Отправка почты из службы Windows Azure с использованием Godaddy SMTP

При следующих настройках я не смог отправить почту с локального ПК. Поиск переполнения стека для многих ответов -

  1. Я попытался поменять хост с smtpout.secureserver.net на relay-hosting.secureserver.net. Что не помогло. (Возможно потому, что при хостинге на godaddy-сервере должен использоваться релейный хостинг) Мой хост - это служба Windows Azure .,
  2. Я прочитал на SO, что defaultCredentials & enableSSL являются взаимоисключающими. Пожалуйста, предложите.
  3. Порт 25 может быть заблокирован несколькими интернет-провайдерами, так что альтернативный порт 80 может использоваться для отправки почты с использованием http.
  4. System.net.Mail не поддерживает 465-порт Godaddy для https.

Испробовав все эти возможности, я получаю одну из двух ошибок:

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

Вопрос 1. Пожалуйста, предложите точно, какая часть конфигурации мне нужна, чтобы использовать SMTP-сервер godaddy из службы Windows Azure?

От localhost я пытаюсь включить самоподписанный сертификат, как предложено Скоттом, здесь..

http://weblogs.asp.net/scottgu/archive/2007/04/06/tip-trick-enabling-ssl-on-iis7-using-self-signed-certificates.aspx

Вопрос 2. указание адреса в файле web.config кажется излишним, поскольку в MailMessage мы должны ввести адрес еще раз. Какова его цель?

Какой самый простой способ настроить Azure для настройки IIS на использование службы Azure для

    private void SendMail(MailMessage msg)
    {
        try
        {
            var smtp = new SmtpClient();
            smtp.Send(msg);
        }
        catch (SmtpFailedRecipientException exFailed)
        {
            lblExSendMail.Text = exFailed.Message;
        }
    }

<system.net>
<mailSettings>
  <smtp deliveryMethod="Network" from="xyz@xyz.com">
    <network host="smtpout.secureserver.net" port="80" userName="xyz@xyz.com" password="xyz-password" />
  </smtp>
</mailSettings>

3 ответа

Решение
  1. Ответ 1. Порт 80 вместо 25 действительно помог мне отправлять письма по каналу http. Это работало как для локального, так и для Windows Azure. Не позволяйте себе указывать что-либо еще в сетевом элементе smtp, кроме host, port=80, userName и password -> для http.

  2. Ответ 2. Атрибут from элемента smtp в web.config используется конструктором без параметров MailMessage. Это особенно полезно, когда вы собираетесь отправлять почту по общему адресу электронной почты.

Отправка электронной почты из приложения Windows Azure с использованием стороннего SMTP-сервера не требует специальной настройки ни для одной из сторон, ни для Windows Azure, ни для стороннего SMTP-сервера. Большая часть SMTP-сервера настроена на использование порта 25, что является самым простым способом отправки электронной почты из Windows Azure, а SMTP-сервер GoDaddy также настроен на использование порта 25, так что вы можете легко это сделать. Конфигурация SSL/ сертификата не требуется ни с одной стороны.

Следующий фрагмент кода представляет собой простейший код, который можно использовать либо в приложении C#, либо в Windows Azure напрямую, без какой-либо настройки с помощью службы SMTP goDaddy:

SmtpClient MySMTPClient;
MailMessage myEmail;
MySMTPClient = new SmtpClient("smtp.secureserver.net", 25);
MySMTPClient.Credentials = new NetworkCredential("<MailID>", "<Password>");
myEmail = new MailMessage(new MailAddress("<sender>"), new MailAddress("<receiver>"));
myEmail.Body = "Email from Windows Azure Application";
myEmail.Subject = "Email from Windows Azure";
try
{
  MySMTPClient.Send(myEmail);
}
catch (Exception ex)
{
  // Display Exception Details
} 

Это так просто:

Вы должны сосредоточиться на узле smtp, порте, ssl... Измените узел smtp на: relay-hosting.secureserver.net И УДАЛИТЕ порт и ssl, вот и все...Не используйте порт smtp и smtp ssl true или false

    var fromAddress = "mailfrom@yourdomain";
    // any address where the email will be sending
    var toAddress = "mailto@yourdomain";
    //Password of your mail address
    const string fromPassword = "******";
    // Passing the values and make a email formate to display
    string subject = TextBox1.Text.ToString();
    string body = "From: " + TextBox2.Text + "\n";
    body += "Email: " + TextBox3.Text + "\n";
    body += "Subject: " + TextBox4.Text + "\n";
    body += "Message: \n" + TextBox5.Text + "\n";
    // smtp settings
    var smtp = new System.Net.Mail.SmtpClient();
    {
        smtp.Host = "relay-hosting.secureserver.net";
**//Warning Delete =>//smtp.Port = 80;**
**//Warning Delete =>//smtp.EnableSsl = false;**
        smtp.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network;
        smtp.Credentials = new NetworkCredential(fromAddress, fromPassword);
        smtp.Timeout = 20000;
    }
    // Passing values to smtp object
    smtp.Send(fromAddress, toAddress, subject, body);

Это работает на Windows-хосте Godaddy на целевой платформе 4.0

Другие вопросы по тегам