2014-05-14 82 views
4

我有一個應用程序將根據先前的級別批准爲每個級別創建任務表單。在創建每個任務時,我必須將電子郵件發送給所有參與任務的用戶。爲此,我使用SPUtility.SendEmail()方法。但不幸的是,迄今爲止它並沒有奏效。調試器成功通過SendEmail方法,沒有任何異常。但價值永遠是假的。 SMTP服務器正在爲SP應用程序以外的應用程序工作。我的代碼如下所示。SPUtility.SendEmail()總是返回假

SPSecurity.RunWithElevatedPrivileges(delegate() 
     { 
      using (SPSite spSite = new SPSite(SiteURL)) 
      { 
       using (SPWeb spWeb = spSite.OpenWeb()) 
       { 
        headers = new StringDictionary(); 
        headers.Add("to", To); 
        headers.Add("from", From); 
        headers.Add("cc", CC); 
        headers.Add("bcc", BCC); 
        if (Priority.Equals("High")) 
        { 
         headers.Add("X-Priority", "1 (Highest)"); 
         headers.Add("X-MSMail-Priority", "High"); 
         headers.Add("Importance", "High"); 
        } 
        headers.Add("subject", Subject); 
        headers.Add("content-type", "text/html"); 
        Status = SPUtility.SendEmail(spWeb, true, true, To, Subject, Body); 
       } 
      } 
     }); 

請幫我解決這個問題。所有的建議將不勝感激。提前致謝。

+0

您是否在sharepoint admin中設置了傳出電子郵件SMTP? – user3373870

+0

@ user3373870:是的。我做了.. – MAC

+0

看看當你調試你的代碼時,這會給你什麼 當然,你必須改變(網絡);到您的網站 'var IsEmailServerSet = SPUtility.IsEmailServerSet(web);' – user3373870

回答

0

幾分鐘前我有同樣的問題。 您可能會遇到smtp服務器RELAY的問題。

試試這個:

  1. 打開IIS 6
  2. 轉到SMTP虛擬服務器(開放性)
  3. 標籤一般:在下拉列表中的服務器選擇IP地址經過
  4. 標籤訪問

    4.1 訪問控制確保匿名訪問被選中

    4.2 中繼限制添加IP:127.0.0.1和服務器

  5. 標籤交貨的IP地址:進入按鈕「出站連接」並設置端口= 587

這就是所有。 我希望有幫助

+0

對!令人驚訝的是「Internet信息服務(IIS)管理器」是沒用的。只要我啓動「Internet信息服務(IIS)6.0管理器」,並點擊「本地計算機」,我看到[SMTP虛擬服務器#1]處於「停止」狀態!可能是因爲我上次重新啓動IIS。 – jumxozizi

0

它在我看來像你使用錯誤的方法簽名。你將會遇到設置標題爲StringDictionary的麻煩,但是你使用了不使用這些標題的重載SPUtility.SendEmail()。 試試這個:

SPSecurity.RunWithElevatedPrivileges(delegate() 
     { 
      using (SPSite spSite = new SPSite(SiteURL)) 
      { 
       using (SPWeb spWeb = spSite.OpenWeb()) 
       { 
        headers = new StringDictionary(); 
        headers.Add("to", To); 
        headers.Add("from", From); 
        headers.Add("cc", CC); 
        headers.Add("bcc", BCC); 
        if (Priority.Equals("High")) 
        { 
         headers.Add("X-Priority", "1 (Highest)"); 
         headers.Add("X-MSMail-Priority", "High"); 
         headers.Add("Importance", "High"); 
        } 
        headers.Add("subject", Subject); 
        headers.Add("content-type", "text/html"); 
        Status = SPUtility.SendEmail(spWeb, headers, Body); 
       } 
      } 
     });