Nienawidzę po prostu opublikować ślad stosu tutaj, ale nie mam pomysłów ... Moja aplikacja wysyła e-maile do różnych zadań na stronie internetowej, a 90% czasu nie ma problemy. Jednak co jakiś czas ASP.NET rzuca dziwny wyjątek, który wydaje się odnosić do łączności z serwerem pocztowym (używam serwerów biznesowych Google dla wiadomości e-mail). Błąd jest zbyt ogólny dla mnie do debugowania, stąd ślad stosu poniżej. Moja aplikacja przechwytuje wyjątek i wypisuje ogólną odpowiedź "spróbuj ponownie w ciągu 5 minut".Tymczasowe problemy z wysyłaniem e-maili z ASP.NET
Jestem zakłopotany przez ten błąd, ponieważ:
- Google e-mail jest na ogół bardzo wiarygodne (to jest wysyłane z mojej domeny, nie gmail.com).
- Objętości są bardzo niskie, więc nie powinno to być problemu z ładowaniem/spamowaniem.
- Błąd jest bardzo ogólny.
- Próba powtórzenia w ciągu 5 minut prawie zawsze pozwala na wysłanie wiadomości e-mail bez problemu, przy czym żaden z parametrów (odbiorca, temat, treść) nie uległy zmianie.
Wszelkie pomysły? Jedyne nierozstrzygnięte kwestie, które mogę wymyślić, to:
- Wysyłanie wiadomości e-mail jest synchroniczne. Właśnie to chcę zrobić, ponieważ chcę odpowiedzieć użytkownikowi na komunikat o stanie sukcesu/porażki.
- Używam Amazon EC2 jako serwera, jeśli ma to jakiekolwiek znaczenie w tej sprawie.
Kod:
public static void SendMail(String from, String to, String subject, String body, bool IsHtml)
{
MailMessage m = new MailMessage(from, to, subject, body);
m.IsBodyHtml = IsHtml;
SmtpClient smtpClient = new SmtpClient();
smtpClient.EnableSsl = true;
smtpClient.Send(m);
}
Wyjątek:
System.Net.Mail.SmtpException: Error in processing. The server response was: 4.3.0 Mail server temporarily rejected message. m6sm2190005vcx.24
at System.Net.Mail.DataStopCommand.CheckResponse(SmtpStatusCode statusCode, String serverResponse)
at System.Net.Mail.DataStopCommand.Send(SmtpConnection conn)
at System.Net.Mail.SmtpConnection.OnClose(Object sender, EventArgs args)
at System.Net.ClosableStream.Close()
at System.Net.Mail.MailWriter.Close()
at System.Net.Mail.SmtpClient.Send(MailMessage message)
Wykonywanie wyszukiwania google na tym konkretnym błędzie wskazuje, że jest to prawdopodobnie problem z serwerami Google, o których wiedzą.Rozstrzygnięcie w toku. –