– To znowu ja. I znów mam dla ciebie małą niespodziankę.

„Dzisiaj nauczę Cię, jak wysyłać wiadomości e-mail za pomocą języka Java ” .

„Zacznijmy od dobrych wiadomości: Java ma natywną bibliotekę do pracy z pocztą e-mail ” .

„Złą wiadomością jest to, że ta biblioteka jest częścią Java EE , a nie Java SE ”.

Java EE to rozszerzona wersja JavaSE , która zawiera klasy potrzebne do bardziej inteligentnych aplikacji. Na przykład aplikacji do pracy z pocztą elektroniczną”.

– Rozumiem, więc co można w takim razie zrobić?

„Cóż, sugeruję po prostu pobrać tę bibliotekę i to wszystko”.

„Rozsądnie używaj IntelliJ IDEA”.

„Utwórz klasę i dodaj biblioteki javax.mail.* i javax.mail.internet.* do sekcji importu.

„Następnie naciśnij Alt + Enter i pozwól IDEA zrobić wszystko za Ciebie:

„Oto jak wygląda oferta pobrania brakujących bibliotek:”

Wyślij e-mail - 1

„Oto jak wygląda okno pobierania:”

Wyślij e-mail - 2

„Lub możesz go pobrać tutaj

„Pobrano. Co dalej?”

„Musisz przejść do ustawień projektu (Open Module Settings) do sekcji Biblioteki i dodać pliki JAR z pobranego archiwum.”

Wyślij e-mail - 3

"Zrobione."

„Czy poniższe linie nie są już czerwone?”

import javax.mail.internet.MimeMessage;
import javax.mail.internet.*;

"Tak."

– Świetnie, w takim razie kontynuujmy.

„Wysłanie wiadomości e-mail składa się z trzech kroków”.

1) Nawiąż połączenie z serwerem pocztowym, który będzie używany do wysłania wiadomości e-mail

2) Utwórz wiadomość e-mail i, jeśli to konieczne, dodaj załączniki

3) Wyślij wiadomość e-mail.

"Zacznijmy od początku."

„Aby wysłać wiadomość e-mail w Javie, musisz najpierw nawiązać połączenie z serwerem pocztowym”.

„Najlepiej, jeśli masz już konto e-mail na serwerze. W obawie przed spamem nowoczesne serwery pocztowe nie chcą wysyłać wiadomości od anonimowych użytkowników ” .

„Możesz połączyć się z serwerem za pomocą jednego wywołania metody javax.mail.Session.getDefaultInstance:”

Utwórz połączenie z serwerem pocztowym
Properties props = new Properties();

// Here we need to load data into the props object

Session session = Session.getDefaultInstance(props);

„Ale musisz przekazać ustawienia serwera pocztowego do tej metody”.

„Na przykład możesz utworzyć plik Mail.properties i wypełnić go żądanymi ustawieniami, na przykład coś takiego:”

Mail.właściwości
mail.transport.protocol=smtp
mail.host=smtp.gmail.com
mail.smtp.auth=true
mail.user=arnold@gmail.com
mail.password=strong

„Najważniejsze jest określenie protokołu i hosta, ale możesz potrzebować dodatkowych ustawień, w zależności od tego, jak działa serwer pocztowy”.

„Możesz po prostu dodać te dane do obiektu Właściwości bezpośrednio w swoim kodzie Java”.

"Na przykład:"

Utwórz połączenie z serwerem pocztowym"
Properties props = new Properties();
props.put("mail.transport.protocol", "smtps");
props.put("mail.smtps.host", “smtp.gmail.com”);
props.put("mail.smtps.auth", "true");
props.put("mail.smtp.sendpartial", "true");

Session session = Session.getDefaultInstance(props);

„Świetnie, mamy sesję. Teraz utwórzmy wiadomość e-mail”.

„Jest to łatwiejsze niż się wydaje na pierwszy rzut oka. Na przykład:”

Utwórz wiadomość e-mail
// Create a message
MimeMessage message = new MimeMessage(session);

// Set the message subject
message.setSubject("Test email!");

// Add the message text
message.setText("Asta la vista, baby!");

// Specify the recipient
message.addRecipient(Message.RecipientType.TO, new InternetAddress("stalone@gmail.com"));

// Specify the delivery date
message.setSentDate(new Date());

„Jako odbiorcę mogę podać dowolny adres e-mail?”

„Tak. Co więcej, jako nadawcę możesz podać dowolny adres e-mail”.

„Świetnie! Wezmę to pod uwagę”.

„Teraz musimy tylko wysłać tę wiadomość”.

„Najpierw logujemy się na serwerze, a następnie wysyłamy naszą wiadomość. Tylko dwie linijki kodu:”

Wysłać wiadomość
// Username and password for a Gmail account
String userLogin = “arnold@gmail.com;
String userPassword = “strong”;

// Sign in on the server:
Transport transport = session.getTransport();
transport.connect("smtp.gmail.com", 465, userLogin, userPassword);

// Send a message:
transport.sendMessage(message, message.getRecipients(Message.RecipientType.TO));

„Jakie to interesujące! Muszę spróbować”.

„Jeśli zastanawiasz się, jak wysłać wiadomość z załącznikami, możesz o tym przeczytać tutaj ”.

„Jeśli chcesz dowiedzieć się, jak odbierać pocztę, zajrzyj tutaj ”.

„Jasna cholera. Jakie przydatne linki!”

„Tak, zamierzam teraz stworzyć własnego klienta poczty. Super!”

— Dzięki, Ellie!