Tatry
Szczyty, doliny, jaskinie... Opisy oraz fotografie wykonane podczas moich górskich wycieczek...
Więcej...
19.02.2020
ŚRODA

(03) – Wysyłanie wiadomości e-mail: część 1 – Opis biblioteki Net.Mail

Visual Studio oferuje bibliotekę, dzięki której stworzenie procedury wysyłającej wiadomości e-mail jest uproszczone do minimum. Wszystko co trzeba zrobić to ustawienia serwera SMTP, podania odpowiednich adresów e-mail, hasła no i oczywiście treści mail-a. Biblioteka, którą należy zaimportować to: System.Net.Mail. Poniżej przedstawiam listing procedury wysyłającej wiadomości na konto Gmail.  Kod procedury należy tylko uzupełnić o swoje dane, czyli adres e-mail i hasło. Teraz wystarczy utworzyć nowy projekt VB dodać na formę komponent Button i we właściwościach Click wpisać adres poniższej procedury wraz z parametrami: nadawca mail-a, odbiorca mail-a, temat, treść wiadomości i opcjonalnie nazwa nadawcy.  Należy też pamiętać, aby na początku projektu zaimportować bibliotekę, o której wspomniałem na początku czyli wpisać instrukcję:  Imports System.Net.Mail

Listing procedury zawiera opis ustawień dla poczty Gmail oraz WP. Ustawienia dla WP są zawarte w komentarzach.

 

Private Sub wyslij_wiadomosc(ByVal nadawca_mail As String, _

                                 ByVal odbiorca_mail As String, _

                                 ByVal temat As String, _

                                 ByVal tresc_wiadomosci As String, _

                                 Optional ByVal nazwa_nadawcy As String = „”)

        ‚Ustawienie zmiennych lokalnych odpowiedzialnych za konfigurację serwera SMTP i samej wiadomości

        Dim Klient_Smtp As New SmtpClient()

        Dim wiadomosc As New MailMessage()

        ‚Na wypadek gdyby coś poszło nie tak kod zapisalem w bloku Try … End Try

        Try

            ‚Czy użyć domyślnych parametrów uwierzytelniania – False, czyli nie

            Klient_Smtp.UseDefaultCredentials = False

            ‚Najważniejsze parametry naszego konta czyli: adres e-mail i hasło

            Klient_Smtp.Credentials = New Net.NetworkCredential(„login@gmail.com”, „hasło”)

            ‚W przypadku Wirtualnej Polski należy podać login i hasło

            ‚Klient_Smtp.Credentials = New Net.NetworkCredential(„login”, „hasło”)

            ‚Numer portu SMTP

            Klient_Smtp.Port = 587

            ‚Szyfrowanie SSL – True, czyli tak

            Klient_Smtp.EnableSsl = True

            ‚Nazwa serwera SMTP dla poczty Gmail

            Klient_Smtp.Host = „smtp.gmail.com”

            ‚Nazwa serwera SMTP dla poczty WP.pl

            ‚Klient_Smtp.Host = „smtp.wp.pl”

            ‚Ustawienia parametrów wiadomości

            ‚Tworzymy nową wiadomość

            wiadomosc = New MailMessage()

            ‚Właściwość: From, czyli adres e-mail nadawcy i opcjonalnie jego nazwa

            wiadomosc.From = New MailAddress(nadawca_mail, nazwa_nadawcy, System.Text.Encoding.UTF8)

            ‚Właściwość: To, czyli adres e-mail, na który będzie wysłana wiadomość

            wiadomosc.To.Add(odbiorca_mail)

            ‚Właściwość: Subject – temat wiadomości

            wiadomosc.Subject = temat

            ‚Czy treść wiadomości będzie w kodzie HTML – False, czyli nie

            wiadomosc.IsBodyHtml = False

            ‚Właściwość Body – treść naszej wiadomości

            wiadomosc.Body = tresc_wiadomosci

            ‚Ostatni etap – wysłanie wiadomości

            Klient_Smtp.Send(wiadomosc)

            ‚Jeżeli zakończy się powodzeniem wyświetl odpowiedni komunikat

            MsgBox(„Wiadomość wysłana”)

        Catch error_t As Exception

            ‚Brrrrr…. Wyświetl komunikat o błędzie, jeśli coś pójdzie nie tak

            MsgBox(error_t.ToString)

        End Try

    End Sub

 

Jeżeli ktoś już próbował uruchomić program z powyższym kodem i wysłać wiadomość na pocztę Gmail to pewnie jest trochę zawiedziony. Przy próbie wysłania wiadomości prawdopodobnie pojawia się następujący komunikat: „…Serwer SMTP  wymaga bezpiecznego połączenia…” Na szczęście jest sposób, aby obejść ten problem. Straciłem sporo czasu nim udało mi się znaleźć rozwiązanie. Problem leży po stronie poczty Gmail, która standardowo jest zabezpieczona przed aplikacjami używającymi mniej bezpiecznej metody logowania. Ustawienie te można zmienić, po wcześniejszym zalogowaniu się na swoje konto,  korzystając z poniższego linku: zmień ustawienia

Klikając w link zostaniemy przeniesieni na stronę umożliwiającą włączenie dostępu do mniej bezpiecznych aplikacji. Po dokonaniu odpowiedniego wyboru odświeżamy stronę i od tej pory nie powinno być już żadnych problemów z wysyłaniem wiadomości z konta założonego na Gmail.

Tak jak wspominałem na wstępie cała procedura wysyłania jest bardzo prosta i sprowadza się do ustawienia kilku właściwości, jednak jest to najprostsze z możliwych rozwiązań. Aplikację można np. rozbudować o możliwość wysyłania załączników, gdzie dodatkowo może być wykorzystana metoda Drag and drop, czyli przeciągnij i upuść. Tego właśnie będzie dotyczył kolejny poradnik, na który już teraz zapraszam.