Я загрузил свой веб-сайт asp.net на IIS 6.0, и в настоящее время он работает, за исключением отправки электронной почты. На моем тестовом сервере asp.net я смог использовать gmail в качестве сервера smtp для исходящей электронной почты из моей учетной записи gmail.
В версии сервера IIS live, когда я нажимаю кнопку управления, которая должна отправлять сообщение, полоса загрузки браузера достигает только 25%, а затем останавливается, без ошибок или сообщений.
Ниже приведен мой код для события нажатия кнопки, которое отправляет электронное письмо.
private void sendUsername()
{
/**
* Sends user's username to
* their listed e-mail address.
*
*/
string username = Session["retrievedUsername"].ToString();
string usernameSent = "usernameSent";
string from = "mandizi84@gmail.com";
string to = enterEmailTextBoxTwo.Text;
System.Net.Mail.MailMessage mail = new System.Net.Mail.MailMessage();
mail.To.Add(to);
mail.From = new MailAddress(from, "The All-Star R.E.C. Center", System.Text.Encoding.UTF8);
mail.Subject = "ASRC password retrieval.";
mail.SubjectEncoding = System.Text.Encoding.UTF8;
string htmlBody = "Hi " + username + "," + "<br /><br />";
htmlBody += "Your username is " + "'" + username + "'" + "." + "<br /><br />";
htmlBody += "If you don't remember your password, return to the Credential Recovery section to get a new password." + "<br /><br />";
htmlBody += "Your membership is much appreciated." + "<br /><br />";
htmlBody += "Thank you," + "<br /><br/>";
htmlBody += "The All-Star R.E.C. Center";
mail.Body = htmlBody;
mail.BodyEncoding = System.Text.Encoding.UTF8;
mail.IsBodyHtml = true;
mail.Priority = MailPriority.Normal;
SmtpClient client = new SmtpClient();
client.Credentials = new System.Net.NetworkCredential(from, "password");
client.Port = 587;
client.Host = "smtp.gmail.com";
client.EnableSsl = true;
try
{
client.Send(mail);
Session["usernameSent"] = usernameSent;
Response.Redirect("~/Email Confirmation.aspx", false);
}
catch (Exception ex)
{
Exception ex2 = ex;
while (ex2 != null)
{
errorLabel.Text = "Mail could not be sent. ";
errorLabel.Text += ex2.ToString();
}
}
}
Я провел некоторое исследование и в нескольких местах прочитал, что настройка роли почтового сервера не нужна, если я использую учетную запись gmail, но в других местах я это сделал.
Итак, мой вопрос в IIS. Нужно ли мне настраивать роль почтового сервера, а затем добавить SMTP для Gmail, чтобы использовать эту службу SMTP на моем действующем веб-сайте на IIS 6.0?
Спасибо
Обновление: я только что удалил цикл while из моего блока catch и получил следующую ошибку:
Почта не может быть отправлена. System.Net.Mail.SmtpException: сбой отправки почты. ---> System.Net.WebException: невозможно подключиться к удаленному серверу ---> System.Net.Sockets.SocketException: не удалось установить соединение, поскольку целевая машина активно отказала ему в 74.125.95.109:587 в System.Net Файл - Конец внутренней трассировки стека исключений --- в System.Net.ServicePoint.GetConnection (PooledStream PooledStream, владелец объекта, логический асинхронный, IP-адрес и адрес, Socket & abortSocket, Socket & abortSocket6, Int32 timeout) в System.Net.PooledStream.Activate ( Объект owningObject, логический асинхронный, тайм-аут Int32, GeneralAsyncDelegate asyncCallback) в System.Net.PooledStream.Activate (объект owningObject, GeneralAsyncDelegate asyncCallback) в System.Net.ConnectionPool.GetConnection (Objec) t владениеObject, GeneralAsyncDelegate asyncCallback, Int32 creationTimeout) в System.Net.Mail.SmtpConnection.GetConnection (ServicePoint servicePoint) в System.Net.Mail.SmtpTransport.GetConnection (ServicePoint servicePoint) в System.Net.Mail.SmtpnectionG) System.Net.Mail.SmtpClient.Send (сообщение MailMessage) --- конец трассировки стека внутренних исключений --- в System.Net.Mail.SmtpClient.Send (сообщение MailMessage) в Credential_Recovery.sendUsername () в e: \ Senior Дизайн \ Вторая версия \ ASRC \ Credential Recovery.aspx.cs: строка 619
строка 619 в моем коде "client.Send (mail)"