2013-10-04 3 views
2

내 웹 사이트에서 보내는 모든 전자 메일에 대해 전자 메일도 보내 게됩니다. 이메일의 약 5 % (하루 수천)가 두 번 보내지는 것으로 나타났습니다. 그러나 전송되는 복제물 사이의 시간은 완전히 일치하지 않습니다 ... 1 주일, 1 개월 또는 1 분일 수 있습니다. 완전히 일치하지 않습니다 ... 문제를 디버깅하려했지만 문제를 복제 할 수 없습니다. 언제나 하나의 전자 메일 만 보내고 제대로 작동합니다. 나는 아이디어가 없어 커뮤니티에서 어떤 입력 양식을 얻고 자 노력하기로 결정했습니다. 모든 통찰력이 크게웹 서버가 중복 전자 메일을 보내고 있습니다

그리고 함수를 호출하는 ASCX 페이지 (...

public static void SendEmail(string subject, string body, string toAddress, string fromAddress) 
    { 
     MailMessage msg = new MailMessage(); 

     msg.From = new MailAddress(fromAddress); 
     msg.To.Add(new MailAddress(toAddress)); 
     msg.Subject = subject; 
     msg.Body = body; 
     msg.IsBodyHtml = false; 

     using (SmtpClient cli = new SmtpClient()) 
     { 
      cli.Send(msg); 
      cli.Dispose(); 
     } 
    } 

폐기()가 바로 문제를 해결하지 못한 내 최근의 시도 중 하나였다 ... 주시면 감사하겠습니다 .이 전자 메일 주소가 null가 아닌 경우가 myslef에 처음와 고객 두 번째 시간을 보내 두 번 호출 있습니다 내가 테스트 중에 이런 짓을 거기에두고하기로 결정

Txp.SendEmail(strOrderConfirmationHeader, strOrderConfirmationText, TxpConst.ORDERNOTIFYADDR, TxpConst.RETURNADDR); 

if (!String.IsNullOrWhiteSpace(custemail)) 
{ 
    Txp.SendEmail(strOrderConfirmationHeader, strOrderConfirmationText, custemail, TxpConst.RETURNADDR); 
} 

그렇게 일관성이 없다는 사실은 아마 코드가 아니며, 전자 메일 서버가 아니기 때문에 메일 로그에 매번 완료된 트랜잭션이 표시되고 매번 다른 메시지 ID가 표시됩니다 ... 나는 모두 아이디어가 없습니다!

+0

두 사람에게 보내려는 경우, 두 번 호출하는 대신 실제'MailMessage'의'To' 컬렉션에 두 사람을 추가하십시오. 이것 만이'SendMail' 메소드에 대한 유일한 진입 점입니까? – Arran

+0

아니면 원래 수신자가 보조 이메일 주소를 보지 못하도록하려면 숨은 참조로 보내주십시오. –

+0

전자 메일 코드를 보내면 전자 메일 하나만 보내집니다. 이러한 종류의 것을 디버깅하려면 일종의 로깅을 추가해야합니다. 그래서이 전자 메일의 출처를 추적 할 수 있습니다. –

답변

0

좋아, 이미 이것을 고려해 보았지만 방문자가 두 번 "제출"을 두번 치는 것이 확실합니까?

특히 전자 메일 서버가 조금 느리게 실행되는 경우를 여러 번 보았습니다. 사용자가 사이트가 아무 것도하지 않는다고 생각하여 다시 제출을 클릭합니다. (아니면 버튼을 더블 클릭하면됩니다.)

여러 제출을 방지하기 위해 앱 코드를 입력해야 할 수도 있습니다. 그것은 상당히 일반적인 문제입니다.

희망이 도움이됩니다.

+0

귀하의 의견을보다 철저히 읽었을지라도 주/월 지연을 설명하지는 못합니다. – SimonGoldstone

+0

그래, 아직 행운이 없다 ... 단지이 행동에 대한 논리적 인 이유가 아닌 것 같다 ... – mmcclur2

+0

이메일의 헤더를 확인하십시오. 대개 고유 한 ID가 표시됩니다. 예 :'Message-ID : <[email protected]>'중복 된 ID는 동일한가, 아니면 다른 ID입니까? 동일하다면 전송 계층이나 이메일 서버 자체에있는 것처럼 들립니다. 그것이 다른 경우 클라이언트 측에 뭔가있는 것이 좋습니다. 최소한 이것은 분열하고 정복하는 데 도움이 될 것입니다. – SimonGoldstone

관련 문제