2009-07-03 77 views
9

我需要知道從我的Sharepoint webparts和/或自定義功能發送電子郵件的最佳做法是什麼。在Sharepoint發送電子郵件

我應該只使用普通的.Net類來發送電子郵件嗎?還是通過與outlook服務器集成來實現它的更好方式?

回答

16

簡單的方法是使用內置的實用工具,這將然後使用郵件服務器setttings設置在中央管理

using Microsoft.SharePoint.Utilities; 
SPUtility.SendEmail(SPContext.Current.Web, false, false, 
    "[email protected]", "subject", 
    "body"); 
+1

這使用了在CA管理員指定的地址。如果你想從地址定製,請使用普通的.net類。 – ArjanP 2009-07-05 11:58:24

1

通用的方式在任何情況下(這裏的SPWeb不可用)讀OutboundMailService發送電子郵件在SPUtility中使用的設置。然後手動創建SmtpClient:

var adminApp = SPAdministrationWebApplication.Local; 
var instance = adminApp.OutboundMailServiceInstance; 

var server = instance.Server.Address; 
var defaultFrom = adminApp.OutboundMailSenderAddress; 

var client = new SmtpClient(); 
client.Host = server; 
message.From = new MailAddress(defaultFrom); 
... 
0

您也可以將此代碼用於動態郵件ID。此代碼根據用戶獲取郵件。我使用CAML查詢從列表中獲取電子郵件內容的數據。

SPUser AssigUser = oWeb.EnsureUser(Assigned_Username); 
SPQuery mquery = new SPQuery(); 
mquery.Query = @"<Where><Eq><FieldRef Name='Email_x0020_Type' /> 
        <Value Type='Text'>Review - Ready for Review</Value> 
       </Eq></Where>"; 
string Emailsub = ""; 
string Emailbody = ""; 
SPList mList = oWeb.Lists["Email Content"]; 
SPListItemCollection itemcollection = mList.GetItems(mquery); 
foreach (SPListItem item in itemcollection) 
{ 
    Emailsub = item["Email Subject"].ToString(); 
    Emailbody = item["Email Content"].ToString(); 
    SPUtility.SendEmail(oWeb, false, false, AssigUser.Email, Emailsub, 
         Emailbody + "</br>" + oWeb.Url); 
    break; 
} 
+0

你能解釋這段代碼何時有用嗎?它看起來非常具體,並沒有真正添加任何接受的答案。當然,你可以從列表或當前用戶獲取參數...也許我錯過了這裏的觀點。 – Kobi 2012-11-22 07:04:28

0

使用過載與StringDictionary參數(source

StringDictionary headers = new StringDictionary();        
    headers.Add("to", currCtxt.Web.CurrentUser.Email); 
    headers.Add("cc", "[email protected]"); 
    headers.Add("bcc", ""); 
    headers.Add("from", "[email protected]"); 
    headers.Add("subject", "Email Subject"); 
    headers.Add("content-type", "text/html"); 
    string bodyText = "Hello how are you?"; 
    SPUtility.SendEmail(currCtxt.Web, headers, bodyText.ToString());