Free Java API for Sending Simple & HTML-based Emails

Open Source Java Email Processing API to Create and Send Text and HTML-based Email Messages with Attachments, Embedded Images, SMTP, IMAP, POP3 Protocol Support abd Advanced Security support.

Какво е 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, също използван за установяване на сигурна връзка. Библиотеката поддържа и стандартна автентикация с потребителско име/парола за свързване към сървъри, изискващи вход.

 Български