1. Przestrzeń System.Net.Mail
Przestrzeń ta zawiera wszystko co jest nam potrzebne aby w łatwy i szybki sposób wysłać maila. Najczęściej używanymi klasami z pewnością są:
Attachment – reprezentuje załącznik wiadomości
MailAddress – klasa reprezentująca mail nadawcy lub odbiorcy
MailMessage – reprezentuje wiadomość do wysłania
SmtpClient – pozwala na wysłanie utworzonego maila protokołem SMTP
SmtpException – wyjątek w przypadku błędu podczas wysyłania wiadomości
2. Tworzenie wiadomości email
Korzystając z wymienionych wcześniej klas możemy utworzyć naszą wiadomość. Rozpoczniemy od utworzenia obiektu klasy MailMessage:
public MailMessage();
public MailMessage(MailAddress from, MailAddress to);
public MailMessage(string from, string to);
public MailMessage(string from, string to, string subject, string body);
Jak widać mamy do dyspozycji 4 konstruktory. Parametry które przyjmują to:
From – mail osoby wysyłającej
To – mail osoby do której kierujemy wiadomość
Subject – temat wiadomości
Body – treść wiadomości
Wszystkie te parametry można ustawić po utworzeniu obiektu klasy MailMessage:
MailMessage message = new MailMessage();
//właściwość To jest typu MailAdressCollection tak więc możemy
//dodać wiele osób do których kierujemy naszą wiadomość:
//message.To.Add(new MailAddress("do_kogo1@o2.pl");
//message.To.Add(new MailAddress("do_kogo2@o2.pl");
//message.To.Add(new MailAddress("do_kogo3@o2.pl");
message.To.Add(new MailAddress("do_kogo@o2.pl"));
message.From = new MailAddress("od_kogo@o2.pl");
message.Subject = "Temat naszej wiadomości";
message.Body = "Treść naszej wiadomości";
Oprócz tych podstawowych właściwości możemy także ustawić takie rzeczy jak:
//Wysłanie ukrytej kopii
message.Bcc.Add(new MailAddress("do_kogo@o2.pl"));
//Wysłanie kopi
message.CC.Add(new MailAddress("do_kogo@o2.pl"));
//Powiadomienie o stanie wysłania; opóźnienie, dostarczenie, niepowodzenie
message.DeliveryNotificationOptions = DeliveryNotificationOptions.OnSuccess;
//Priorytet wiadomości
message.Priority = MailPriority.High;
3. Dodawanie załączników do wiadomości
Wiele wysyłanych przez nas wiadomości zawiera dodatkowe dane w postaci zdjęć, plików PDF czy też innego rodzaju dane audio/wideo. Aby do wiadomości dodać załączniki tworzymy obiekty klasy Attachment a w jego konstruktorze podajemy ścieżkę do pliku na dysku:
message.Attachments.Add(new Attachment(@"C:\Users\Patryk\Documents\CV.docx"));
message.Attachments.Add(new Attachment(@"C:\Users\Patryk\Documents\Lista_Zakupow.docx"));
4. Wsparcie dla znaczników HTML
Aby włączyć w wiadomości wsparcie dla znaczników HTML należy najpierw ustawić właściwość IsBodyHtml na true:
message.IsBodyHtml = true;
Po tej operacji możemy używać znaczników HTML w naszej wiadomości:
message.Body = @"<html><body><h1>Hello</h1><br><br>Co u ciebie słychać?</body></html>";
Aby dodać jakąś grafikę bezpośrednio w wiadomości (nie jako załącznik) należy skorzystać z klas AlternateView oraz LinkedResource:
//treść naszej wiadomości ze znacznikami HTML
string body = "<html><body><h1>Hello</h1><br><br>Co u ciebie słychać?<br>Tutaj moje zdjęcie z zeszłych wakacji: <br> <img src=\"cid:Zd1\"></body></html>";
//tworzymy alternatywny widok
AlternateView htmlView = AlternateView.CreateAlternateViewFromString(body);
//wybieramy zdjęcie które zostanie dodane do naszej wiadomości HTML
LinkedResource image = new LinkedResource(@"C:\Users\Patryk\Pictures\przyklad_graphic.png", "image/png");
//nadajemy Id naszemu zdjęciu (później wstawiamy je jako cid:"Id"
image.ContentId = "Zd1";
htmlView.LinkedResources.Add(image);
//dodajemy widok do wiadomości
message.AlternateViews.Add(htmlView);
5. Wysyłanie wiadomości
Czas teraz na najważniejszą część czyli wysłanie wiadomości. Wysyłamy za pomocą protokołu SMTP więc tworzymy najpierw obiekt tej klasy:
SmtpClient smtp = new SmtpClient("poczta.o2.pl", 587);
W konstruktorze jak widać podałem port SMTP wykorzystywany przez o2.pl oraz nazwę serwera.
Jeśli serwer wymaga uwierzytelnienia, należy stworzyć obiekt klasy NetworkCredential i w konstruktorze podać wymagane parametry:
smtp.UseDefaultCredentials = false;
smtp.Credentials = new NetworkCredential("uzytkownik", "haslo");
Na końcu oczywiście wysyłamy nasze dzieło:
smtp.Send(message);
Jeśli zrobiliśmy wszystko zgodnie z instrukcją, nasza wiadomość powinna zostać wysłana bez żadnych błędów.
Wracając jeszcze do portów SMTP to należy sprawdzić jaki jest używany przez danego dostawcę poczty. Najczęściej to 587 od kiedy TP SA zablokowała port 25.
Tyle odnośnie wysyłania wiadomości. Miłego spamowania J
Brak komentarzy:
Prześlij komentarz