Безкоштовний 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>
  <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, який також використовується для встановлення захищеного з’єднання. Крім того, бібліотека підтримує стандартну автентифікацію за допомогою імені користувача та пароля для підключення до серверів, що вимагають входу.

 Українська