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

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

Начнем с хорошей новости – в Java есть родная библиотека для работы с почтой.

А плохая новость состоит в том, что эта библиотека входит в состав Java EE, но не в 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, new 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));

— Как интересно. Надо пробовать.

— Если тебе интересно, как отправить письмо с вложениями, то можешь почитать про это тут.

Если хочешь разобраться, как еще и получать почту, милости прошу сюда.

— Ух ты, какие полезные ссылки.

Да, я теперь свой почтовый клиент сделаю. Круто!

Спасибо, Элли!