2009-07-03 24 views
9

Potrzebuję wiedzieć, jaka jest najlepsza praktyka wysyłania wiadomości e-mail z moich witryn sieci Web i/lub niestandardowych funkcji.Wysyłanie wiadomości e-mail w Sharepoint

Czy powinienem używać zwykłych klas .Net do wysyłania wiadomości e-mail? lub czy jest to lepszy sposób na zrobienie tego poprzez integrację z serwerem Outlook?

Odpowiedz

16

Łatwy sposobem jest użycie wbudowanego w Utilities, to następnie wykorzystać konfigurację serwera pocztowego setttings w centralnej administratora

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

wykorzystuje to, że od adresu podanego w CA administratora. Jeśli chcesz niestandardowe adresy, idź z normalnymi klasami .net. – ArjanP

1

uniwersalny sposób, aby wysłać e-mail w dowolnym kontekście (gdzie SPWeb niedostępne) jest odczytywany OutboundMailService ustawienia, które są używane w SPUtility. Następnie utwórz SmtpClient ręcznie:

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

Możesz również użyć tego kodu do dynamicznego identyfikatora poczty. ten kod dostaje pocztę według użytkownika. Użyłem kwerendy CAML, aby uzyskać dane dotyczące treści e-mail z list.

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

Czy możesz wyjaśnić, kiedy ten kod jest przydatny? Wydaje się bardzo konkretny i tak naprawdę nie dodaje niczego do zaakceptowanej odpowiedzi. Oczywiście możesz pobrać parametry z listy lub aktualnego użytkownika ... Może brakuje mi tutaj sensu. – Kobi

+0

Treść wiadomości e-mail jest przechowywana na osobnej liście i przy użyciu tego zapytania o caml można uzyskać i wykorzystać zawartość wiadomości e-mail. –

0

użyciu przeciążenie z StringDictionary argumentów (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()); 
Powiązane problemy