내 (mvc) 웹 응용 프로그램에서 이벤트 알림을 보내기 위해 GoogleApps 계정에 대해 작업하고 있습니다. 보통 모든 것이 잘 작동합니다. 전송 채널을 폐쇄,SmtpClient가 재시도를 처리하는 방법 이해.
서비스를 사용할 수 없습니다 :이 시스템은 SMTP 서버에서 75 개 이상의 메시지 나 그래서 제가 보는 답장을 보내도록 요청됩니다. 서버 응답 : 4.7.0 나중에 다시 시도하십시오, 연결을 닫으십시오. (MAIL)는 uf10sm1153163icb.17
그러나, 시스템은 자동 재 시도하고 아무것도 내 시스템은 그것을 만들기 (모두가 내가이 점으로 말할 수있다) 결국 보내도록 요청합니다. 그러나 코드가 전자 메일을 생성하고 보내는 방법을 감안할 때 이러한 재 시도가 어떻게 처리되는지 이해할 수 없습니다.
전송이 비동기 적으로 발생하는 경우 '서비스를 사용할 수 없음'조건을 유발하는 모든 사항이 철저히 전송되도록 전송 속도를 줄이려고합니다. 하지만 코드의 외모에서, 그것은 내가 시도 | 블록을 잡아라. (System.Net.Mail를 사용하여)
foreach (string email in recipientEmails)
{
try
{
EmailGateway.Instance.SendEmail(email, notificationSubject, notificationMessage);
}
catch (Exception ex)
{
Logger.Instance.LogException(ex);
Logger.Instance.LogMessage("ERROR! Unsent email is to: " + email);
}
Logger.Instance.LogMessage("Sent " + notificationSubject + " to " + email);
}
을 그리고 여기 게이트웨이 코드입니다 :
public virtual void SendEmail(string replyToAddress, string toEmailAddress, string subject, string body)
{
string destinationEmailAddress = toEmailAddress;
string fromEmailAddress = "[email protected]";
bool useSSL = "true";
MailMessage message = new MailMessage(fromEmailAddress, destinationEmailAddress, subject, body);
message.IsBodyHtml = true;
SmtpClient smtp = new SmtpClient();
smtp.EnableSsl = useSSL;
smtp.Send(message);
}
그래서 내가 모두 성공을 붙잡고있어
여기 내 외관 코드의 관련 비트입니다 내 로거 테이블에 오류가 발생했습니다. 내가 이해할 수없는 점은 에 대한 로그 메시지가 모두 표시되고 동일한 전자 메일 주소에 대해이 실패한 다음 성공 조건이 표시된다는 것입니다. 그것은 '재시도'를 나타내며 SmtpClient (네이티브 .net 어셈블리)가 명시 적 코드를 요구하지 않고 다시 시도 할 수 있다는 사실에 놀랐지는 않지만 두 가지 조건을 모두 기록하기 위해 어떻게 외관 코드가 작성되었는지는 알 수 없습니다.