2009-07-03 14 views
9

私は、共有ポイントWebパーツやカスタマイズされた機能からメールを送信するためのベストプラクティスを知る必要があります。Sharepointでメールを送信

通常の.Netクラスを使用して電子メールを送信するだけでいいですか?またはOutlookサーバーとの統合を通じてこれを行うより良い方法ですか?

答えて

16

簡単な方法は、これはその後、(利用できませんSPWeb)がOutboundMailServiceを読まれる任意のコンテキストで電子メールを送信するために、中央管理者に

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

これは、CAの管理者に指定されたからアドレスを使用しています。あなたがアドレスからのカスタムをしたい場合は、通常の.netクラスを使ってください。 – ArjanP

1

ユニバーサル方法をメールサーバsetttingsセットアップを使用するユーティリティに建て使用することです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クエリを使用しました。

StringDictionary引数( source)とのオーバーロードを使用して
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

+0

電子メールのコンテンツは別のリストに保存されています。このcamlクエリを使用すると、コンテンツを取得して電子メールに使用できます。 –

0

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()); 
関連する問題