— А ось і знову я. І знову маю для тебе невеликий сюрприз.
Сьогодні я навчу тебе, як відправити email за допомогою Java.
Почнемо з гарної новини – в Java є рідна бібліотека для роботи з поштою.
А погана новина полягає в тому, що ця бібліотека входить до складу Java Java, але не Java SE.
Java EE – це розширена версія JavaSE, куди входять класи, які потрібні для більш накручених додатків. Як робота з поштою, наприклад.
— Ясно і що робити?
— Ну, пропоную, просто завантажити цю бібліотеку і все.
Скористаємося мудрістю Intellij IDEA.
Створи клас та додай у розділ імпорту пакети javax.mail.* і javax.mail.internet.*
Потім тисни Alt+Enter і нехай IDEA все зробить за тебе:
Так виглядає пропозиція завантажити бібліотеки, що відсутні,
Так виглядає вікно закачування.
Ну, або його можна завантажити по це посилання.
— Скачав. Що далі?
— Тобі треба зайти в налаштування проекту (Open Module Settings) до розділу Libraries і додати туди jar-файли зі скачаного архіву.
— Готово.
— Рядки перестали світитися червоним?
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.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));
— Як цікаво. Потрібно пробувати.
— Якщо тобі цікаво, як надіслати лист із вкладеннями, то можеш почитати про це тут.
Якщо хочеш розібратися, як ще й отримувати пошту, милості прошу сюди. >
— Ух ти, які корисні посилання.
Так, я тепер свій поштовий клієнт зроблю. Круто!
Дякую, Еллі!
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ