wtorek, 12 maja 2009

Wykorzystanie shella do wywołania klienta email (czyli mailto: z C#)

Każdy, kto liznął chociażby programowanie stron internetowych (nawet w czystym HTML'u) spotkał się z możliwością prostego wysyłania maili poprzez podanie adresu jako mailto:adresemail@na_pewnym_serwerze, czy można osiągnąć coś podobnego z poziomu aplikacji napisanej przy pomocy C#?

Oczywiście!

Wystarczy wykorzystać możliwości shella systemu operacyjnego windows i uruchomić proces (przy pomocy System.Diagnostics.Process.Start), który jako nazwę będzie miał dpowiednio skonstruowany ciąg "mailto:", czyli:

mailto:adres_email&subject=temat_wiadomosci&body=sugerowana_tresc_wiadomosci

Więcej informacji na temat składni "mailto:" można znaleźć tutaj: http://www.ianr.unl.edu/internet/mailto.html

Ostatecznie funkcja, która uruchamia domyślnego klienta email z zadanym adresatem, tematem i wiadomością, wygląda następująco:

/// <summary> 
 /// Opens the email client. 
/// </summary> 
/// <param name="EmailAddress">The email address.</param> 
/// <param name="MessageSubject">The message subject.</param> 
/// <param name="MessageBody">The message body.</param> 
public static void OpenEmailClient( string EmailAddress, string MessageSubject, string MessageBody ) 
{ 
  string request = String.Format( "mailto:{0}&subject={1}&body={2}", EmailAddress, MessageSubject, MessageBody ); 
  System.Diagnostics.Process.Start( request ); 
} 

W tym momencie mogą pojawić się komentarze, a dlaczego nie wykorzystać klas z przestrzeni System.Web.Mail, System.Net.Mail lub własnego serwera SMTP?
Powodów może być wiele:

  • jeśli chcemy wykorzystać własnego klienta SMTP, to musimy go skonfigurować! Trzeba ustawić serwer SMTP, nazwę użytkownika, hasło itp... dość skomplikowane i wymaga odczytania tych danych z systemu operacyjnego (hasła chyba się wyciągnąć nie da) lub zapytania się o nie użytkownika, czyli kłopoty..
  • jeśli chcemy wykorzystać własny serwer SMTP, to możemy mieć problemy z oprogramowaniem chroniącym przed spamem

Reasumując chyba warto sięgnąć czasami po tak prostą metodę.

Brak komentarzy:

Prześlij komentarz

Posty powiązane / Related posts