Бесплатный Java API для отправки простых и HTML‑писем

Открытый Java API для обработки электронной почты, позволяющий создавать и отправлять текстовые и HTML‑сообщения с вложениями, встроенными изображениями, поддержкой протоколов SMTP, IMAP, POP3 и расширенной безопасностью.

Что такое JavaMail?

В мире корпоративных приложений и автоматизированных систем возможность программно отправлять и получать электронные письма — это не просто удобство, а необходимость. От отправки сброса пароля и подтверждения заказа до обработки входящих запросов в службу поддержки — интеграция электронной почты является ключевой функцией. Для разработчиков на Java фундаментом этой функциональности стала надёжная, открытая JavaMail API. Эта всесторонняя страница продукта исследует JavaMail API, её мощные возможности и предоставляет практические примеры кода, чтобы вы могли начать интеграцию электронной почты в своих Java‑приложениях.

JavaMail API — зрелый открытый фреймворк, предоставляемый Oracle (ранее Sun Microsystems), который обеспечивает независимую от платформы и протоколов основу для создания почтовых и обменных приложений. Это стандартный API для работы с электронной почтой в экосистеме Java. Он абстрагирует сложности базовых почтовых протоколов, таких как SMTP, POP3 и IMAP, позволяя разработчикам работать с чистым объектно‑ориентированным интерфейсом. В библиотеку включено несколько важных функций, среди которых создание и отправка HTML‑писем, добавление вложений, вставка встроенных изображений, многокомпонентный контент, надёжная аутентификация и поддержка безопасности, работа с почтой в виде папок, улучшенный поиск и фильтрация писем, чтение писем через SMTP и многое другое.

Previous Next

Начало работы с JavaMail

Прежде всего, необходимо установить JDK 1.6 или выше. Добавьте следующую зависимость Maven в файл pom.xml.

Maven Dependency

<dependency>
  <groupId>com.sun.mail</groupId>s;
  <artifactId>javax.mail</artifactId>
  <version>1.6.2</version>
</dependency>

Вы можете скачать библиотеку напрямую со страницы GitHub.

Отправка сообщений электронной почты с помощью Java-библиотеки

Открытая библиотека JavaMail включает поддержку создания и отправки как простых, так и HTML‑сообщений внутри Java‑приложений. Разработчики могут читать существующие письма, добавлять файлы и изображения в качестве вложений, отправлять письма нескольким получателям, добавлять пользовательские заголовки и многое другое. Необходимо задать параметры соединения, такие как хост, порт и флаги для включения аутентификации и TLS. Приведённый пример демонстрирует, как отправить базовое текстовое письмо через SMTP‑сервер (например, Gmail) из Java‑приложения.

Как отправить базовое текстовое письмо через SMTP‑сервер с помощью Java API?


import java.util.Properties;
import javax.mail.*;
import javax.mail.internet.*;

public class SimpleEmailSender {

    public static void main(String[] args) {
        // Sender's and recipient's email ID
        String from = "your.email@gmail.com";
        String to = "recipient.email@example.com";
        
        // SMTP server configuration (for Gmail)
        String host = "smtp.gmail.com";
        final String username = "your.email@gmail.com";
        final String password = "your-app-password"; // Use an App Password for Gmail

        // Setup mail server properties
        Properties properties = new Properties();
        properties.put("mail.smtp.auth", "true");
        properties.put("mail.smtp.starttls.enable", "true"); // Use TLS
        properties.put("mail.smtp.host", host);
        properties.put("mail.smtp.port", "587");

        // Get the Session object and pass username and password
        Session session = Session.getInstance(properties, new javax.mail.Authenticator() {
            protected PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication(username, password);
            }
        });

        try {
            // Create a default MimeMessage object
            Message message = new MimeMessage(session);
            
            // Set From: header field
            message.setFrom(new InternetAddress(from));
            
            // Set To: header field
            message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to));
            
            // Set Subject: header field
            message.setSubject("Hello from JavaMail API");
            
            // Set the actual message body
            message.setText("This is a test email sent programmatically using the JavaMail API.");

            // Send message
            Transport.send(message);
            System.out.println("Email sent successfully!");

        } catch (MessagingException e) {
            throw new RuntimeException(e);
        }
    }
}

Поиск и фильтрация электронной почты с помощью Java

Открытая библиотека JavaMail полностью поддерживает поиск сообщений электронной почты в папке по различным критериям (отправитель, тема, дата, флаги) внутри Java‑приложений. Это особенно полезно при разработке почтовых клиентов или автоматизации. Вы также можете комбинировать несколько условий поиска (AND, OR, NOT) с помощью AndTerm, OrTerm, NotTerm. Пример ниже демонстрирует, как искать сообщения от конкретного отправителя с помощью Java‑команд.

Как искать сообщения от конкретного отправителя в Java‑приложениях?


Store store = session.getStore("imap");
store.connect("imap.example.com", username, password);

Folder inbox = store.getFolder("INBOX");
inbox.open(Folder.READ_ONLY);

// Search for messages from a specific sender
SearchTerm senderTerm = new FromStringTerm("alerts@example.com");
Message[] found = inbox.search(senderTerm);

for (Message m : found) {
    System.out.println("Subject: " + m.getSubject());
}

inbox.close(false);
store.close();

Поддержка протоколов SMTP, IMAP, POP3

Открытая JavaMail по умолчанию поддерживает три самых распространённых почтовых протокола: SMTP (Simple Mail Transfer Protocol) для отправки сообщений, POP3 (Post Office Protocol 3) для простого получения писем и IMAP (Internet Message Access Protocol) для более продвинутого доступа к почте (папки, частичный запрос). Кроме того, поддерживаются защищённые варианты, такие как SMTPS, POP3S, IMAPS, и её можно расширять под пользовательские провайдеры.

Продвинутая аутентификация и безопасность с помощью Java

Открытая JavaMail поддерживает защищённое соединение с почтовыми серверами, что критически важно в современном мире, ориентированном на безопасность. Библиотека поддерживает TLS (Transport Layer Security), который шифрует канал связи между вашим приложением и почтовым сервером. Также поддерживается SSL (Secure Sockets Layer) — предшественник TLS, используемый для установления защищённого соединения. Кроме того, библиотека поддерживает стандартную аутентификацию по имени пользователя и паролю для подключения к серверам, требующим входа.

 Русский