— А ось і знову я. І знову маю для тебе невеликий сюрприз.

Сьогодні я навчу тебе, як відправити email за допомогою Java.

Почнемо з гарної новини – в Java є рідна бібліотека для роботи з поштою.

А погана новина полягає в тому, що ця бібліотека входить до складу Java Java, але не Java SE.

Java EE – це розширена версія JavaSE, куди входять класи, які потрібні для більш накручених додатків. Як робота з поштою, наприклад.

— Ясно і що робити?

— Ну, пропоную, просто завантажити цю бібліотеку і все.

Скористаємося мудрістю Intellij IDEA.

Створи клас та додай у розділ імпорту пакети javax.mail.* і javax.mail.internet.*

Потім тисни Alt+Enter і нехай IDEA все зробить за тебе:

Так виглядає пропозиція завантажити бібліотеки, що відсутні,

Send Email - 1

Так виглядає вікно закачування.

Send Email - 2

Ну, або його можна завантажити по це посилання.

— Скачав. Що далі?

— Тобі треба зайти в налаштування проекту (Open Module Settings) до розділу Libraries і додати туди jar-файли зі скачаного архіву.

Send Email - 3

— Готово.

— Рядки перестали світитися червоним?

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

— Ага.

— Добре, тоді продовжимо.

Надсилання листа складається з трьох частин.

1) Встановити з'єднання з поштовим сервером, через який буде надіслано лист

2) Створити лист, додати вкладення якщо треба

3) Відіслати лист.

Почнемо спочатку.

Щоб отруїти email у Java, спочатку потрібно встановити з'єднання з поштовим сервером.

Найкраще, щоб там у тебе вже був поштовий обліковий запис. Сучасні поштові сервери не хочуть розсилати повідомлення анонімних користувачів, побоюючись спаму.

Створити з'єднання з сервером можна одним викликом методу javax.mail.Session.getDefaultInstance:

Створюємо з'єднання з поштовим сервером
Properties props = new Properties();

//тут треба завантажити дані в об'єкт props

Session session = Session.getDefaultInstance(props);

Але цього методу потрібно передати налаштування поштового сервера.

Наприклад, можна створити файл Mail.properties і заповнити його потрібними налаштуваннями, наприклад, якось так:

Mail.properties
mail.transport.protocol=smtp
mail.host=smtp.gmail.com
mail.smtp.auth=true
mail.user=arnold@gmail.com
mail.password=strong

Головне – це задати protocol і host, але можливо знадобляться додаткові налаштування, залежно від режиму роботи поштового сервера.

А можна просто додати ці дані в об'єкт типу Properties прямо в Java-коді.

Приклад:

Створюємо з'єднання з поштовим сервером
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 );

Відмінно, сесія у нас є, тепер давай створимо поштове повідомлення.

Зробити це легше, ніж здається на перший погляд. Приклад:

Створення поштового повідомлення
//створюємо повідомлення
MimeMessage message = new MimeMessage(session);

//встановлюємо тему листа
message.setSubject("тестовий лист!");

//додаємо текст листа
message.setText("Asta la vista, baby!");

//Вказуємо одержувача
message.addRecipient(Message.RecipientType.TO, новий InternetAddress("stalone@gmail.com"));

//Вказуємо дату відправлення
message.setSentDate(new Date());

— Як одержувач можна вказати будь-який email?

— Ага. Більш того. Можна вказати відправника. Будь-яка email-адреса.

— Круто! Я це врахую.

— Тепер залишилося надіслати це повідомлення.

Спочатку ми авторизуємося на сервері, а потім відправимо своє повідомлення. Усього два рядки коду:

Надсилання повідомлення
//логін та пароль gmail користувача
String userLogin = "arnold@gmail.com";
String userPassword = “strong”;

//Авторізуємося на сервері:
Transport transport = session.getTransport();
transport.connect("smtp.gmail.com", 465, userLogin, userPassword);

// надсилаємо повідомлення:
transport.sendMessage(message, message). getRecipients(Message.RecipientType.TO));

— Як цікаво. Потрібно пробувати.

— Якщо тобі цікаво, як надіслати лист із вкладеннями, то можеш почитати про це тут.

Якщо хочеш розібратися, як ще й отримувати пошту, милості прошу сюди. >

— Ух ти, які корисні посилання.

Так, я тепер свій поштовий клієнт зроблю. Круто!

Дякую, Еллі!