2011-10-17 175 views
-1

工作vs2010,asp.net C#。最近我工作在smtp服務器上。使用smtp服務器我需要發送郵件,我已經成功完成了這項工作。要發送郵件,我使用波紋管語法如何發送未發送的郵件

public string PostEmail(string mailSubject, string mailBody) 
{ 

    string deliveryStatusCode = "Ok"; 
    if (!string.IsNullOrEmpty(mailSubject) && !string.IsNullOrEmpty(gConfig.EmailTo)) 
    { 
     MailMessage msg = new MailMessage(); 
     msg.To.Add(gConfig.EmailTo); 
     msg.From = new MailAddress(gConfig.EmailTo); 
     msg.Subject = mailSubject; 
     msg.Body = mailBody; 
     msg.IsBodyHtml = true; 

     SmtpClient smtp = new SmtpClient(gConfig.SmtpHost, gConfig.SmtpPort); 
     smtp.Credentials = new System.Net.NetworkCredential(gConfig.SmtpCredentials, gConfig.SmtpPassword); 
     smtp.EnableSsl = true; 
     smtp.DeliveryMethod = SmtpDeliveryMethod.Network; 


     try 
     { 
      smtp.Send(msg); 
     } 
     catch (SmtpException smptpEx) 
     { 
      deliveryStatusCode = smptpEx.Message; 
     } 

    } 
    else 
    { 
     deliveryStatusCode = "Invalid or null value entry."; 
    } 

    return deliveryStatusCode; 
} 

。現在我面臨的一個問題,由於某種原因,一些郵件不能發送,發送的未發送郵件的需求,如何把那些未發送的郵件,是否有SMTP任何機制來執行此工作或出現是解決這個問題的一些方法。提前感謝。如果有任何查詢請求。

+0

我不知道爲什麼人們打上負,我認爲上面的問題是不是像一個孩子的糖果,PLZ任何一個可以告訴我。爲什麼這是一個壞的問題嗎? – shamim

+0

你說他們不能發送,但那不清楚。你的代碼是否引發錯誤?信息是否離開你的系統,但永遠不會到達?在電子郵件旅程中有很多跳躍,將它縮小到一小段示例代碼是不可能的。 –

+0

這個問題很不明確。正如Chase所說,「不能發送」,這是什麼意思?你有例外嗎?你是否收到回覆(在這種情況下,他們*發送*,他們只是沒有收到正確的收件人) –

回答

0

如果smpt服務器關閉,則不能發送郵件,您可以使用拾取目錄。當它聯機時,它將讀取目錄中的文件並開始發送電子郵件。

0

您的.NET代碼只需要一條消息,生成併發送電子郵件並將其發送到SMTP服務器。 SMTP服務器重新發送任何未發送的消息。

您可以執行@peer所說的,而不是發送SMTP郵件,只需將生成的文件放入SMTP拾取目錄中,但這需要您的.NET代碼才能訪問SMTP拾取目錄。

另一種選擇可能是將電子郵件對象(內存或磁盤上的序列號)存儲起來,如果send引發錯誤,則稍後重試。

然而,最終,你真的需要找出爲什麼電子郵件沒有通過首先。這通常是一個配置問題,可以通過一些調查來緩解。研究網絡連接,SMTP服務器正常運行時間,最重要的是..認證。

正如我在評論中所說的那樣,生成的電子郵件在最終登陸最終用戶收件箱之前進行了很多次跳躍。沒有更多的細節,以至於錯誤,我們只能扔飛鏢,並希望其中一個着陸。

好運
大通

相關問題