2011-10-06 51 views
2

以下是調用sendmail方法的代碼。問題是隻有第一次撥打sendmail纔會將郵件發送給接收方。第二次調用sendmail時,它會完美執行,但不會傳送任何郵件。如果我將應用程序置於調試模式,然後逐步執行,則這兩封郵件都可以發送。看起來程序的執行速度非常快,出現了問題。因此,我在發送功能下面延遲了一段時間,所以它開始爲我工作,但我認爲這不是一個完美的解決方案。任何人都知道這裏發生了什麼。SMTP郵件不發送第二個電話

 if (!String.IsNullOrEmpty(SendMailAdmin)) 
     { 
     SendMail(SendMailFrom, SendMailAdmin, Subject, AdminMessageText + "<br>" + MessageText); 
     } 
     if (!String.IsNullOrEmpty(SendMailOwner)) 
     { 
     SendMail(SendMailFrom, SendMailOwner, Subject, OwnerMessageText + "<br>" + MessageText); 
     } 

    public void SendMail(String MessageFrom, String MessageTo, String MessageSubject, String MessageBody) 
      { 
       MailMessage Message = new MailMessage(); 
       Message.Priority = MailPriority.High; 
       Message.From = new MailAddress(MessageFrom); 
       Message.To.Add(MessageTo); 

       Message.Subject = MessageSubject; 
       Message.IsBodyHtml = true; 
       Message.Body = MessageBody; 

       try 
       { 
        SmtpClient client = new SmtpClient(SMTPServer, Convert.ToInt32(SMTPPort)); 

        client.UseDefaultCredentials = false; 
        client.Credentials = new NetworkCredential("{myusername}", "{mypassword}"); 

        client.Send(Message); 
System.Threading.Thread.Sleep(3000); 

       } 
       catch 
       { 
        throw; 
       } 
      } 
+1

也許有些防洪地方低水平。調用你的方法一次,併發送'MessageTo'數組而不是一個,它將工作。 –

+0

感謝shadow,但內容對於這兩個郵件都是不同的,因爲您可以在sendmail調用中看到它,它對於AdminMessageText和OwnerMessageText不同。如果我想發送2個用戶,那麼我可以使用CC,但那不是這種情況。你認爲防洪是什麼意思? – Chief

+1

被黑客入侵的服務器發送成千上萬封垃圾郵件。一種方法可以解決這個問題,不允許一個接一個地發送郵件。所以這很可能是這樣的安全措施。查看服務器事件日誌以驗證它。無論如何,睡幾秒是不錯的做法,假設防洪水平較低並且不能停用,IMO不會想到更好的辦法。 –

回答

1

我個人認爲只是會在這一點上爲你工作的事情是延遲碼。@影子是正確的,這是服務器的配置