Отправка почты из службы Windows Azure с использованием Godaddy SMTP
При следующих настройках я не смог отправить почту с локального ПК. Поиск переполнения стека для многих ответов -
- Я попытался поменять хост с smtpout.secureserver.net на relay-hosting.secureserver.net. Что не помогло. (Возможно потому, что при хостинге на godaddy-сервере должен использоваться релейный хостинг) Мой хост - это служба Windows Azure .,
- Я прочитал на SO, что defaultCredentials & enableSSL являются взаимоисключающими. Пожалуйста, предложите.
- Порт 25 может быть заблокирован несколькими интернет-провайдерами, так что альтернативный порт 80 может использоваться для отправки почты с использованием http.
- System.net.Mail не поддерживает 465-порт Godaddy для https.
Испробовав все эти возможности, я получаю одну из двух ошибок:
- Ошибка отправки почты - невозможно подключиться к удаленному серверу.
- SMTP-сервер требует безопасного соединения или клиент не прошел проверку подлинности.
Вопрос 1. Пожалуйста, предложите точно, какая часть конфигурации мне нужна, чтобы использовать SMTP-сервер godaddy из службы Windows Azure?
От localhost я пытаюсь включить самоподписанный сертификат, как предложено Скоттом, здесь..
Вопрос 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. Порт 80 вместо 25 действительно помог мне отправлять письма по каналу http. Это работало как для локального, так и для Windows Azure. Не позволяйте себе указывать что-либо еще в сетевом элементе smtp, кроме host, port=80, userName и password -> для http.
Ответ 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