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.
Co je JavaMail?
Ve světě podnikových aplikací a automatizovaných systémů není schopnost programově odesílat a přijímat e‑maily jen pohodlná výhoda – je to nutnost. Od odesílání resetů hesel a potvrzení objednávek po zpracování příchozích tiketů podpory, integrace e‑mailu je základní funkcí. Pro vývojáře Java je základním kamenem této funkčnosti robustní, open source JavaMail API. Tento komplexní produktový popis prozkoumá JavaMail API, jeho výkonné funkce a poskytne praktické ukázky kódu, abyste mohli začít s integrací e‑mailu ve svých Java aplikacích.
JavaMail API je vyspělý open source framework poskytovaný společností Oracle (dříve Sun Microsystems), který nabízí platformově a protokolově nezávislý rámec pro tvorbu poštovních a zprávových aplikací. Jedná se o standardní API pro práci s e‑mailem v ekosystému Java. Abstrahuje složitosti podkladových e‑mailových protokolů, jako jsou SMTP, POP3 a IMAP, a umožňuje vývojářům pracovat s čistým, objektově orientovaným rozhraním. Knihovna obsahuje řadu důležitých funkcí, jako je vytváření a odesílání HTML e‑mailů, přidávání příloh, vkládání vložených obrázků, multipart obsah, silná autentizace a podpora zabezpečení, podpora e‑mailů založených na složkách, lepší vyhledávání a filtrování e‑mailů, čtení e‑mailů přes SMTP a další.
Začínáme s JavaMail
Nejprve je potřeba nainstalovat JDK 1.6 nebo vyšší. Do souboru pom.xml je nutné přidat následující Maven závislost.
Maven závislost
<dependency>
<groupId>com.sun.mail</groupId>s;
<artifactId>javax.mail</artifactId>
<version>1.6.2</version>
</dependency>
Knihovnu můžete stáhnout přímo ze stránky GitHub.
Odesílání e‑mailových zpráv pomocí Java knihovny
Open source knihovna JavaMail zahrnuje podporu pro vytváření a odesílání jednoduchých i HTML e‑mailových zpráv v Java aplikacích. Vývojáři mohou číst existující e‑maily, přidávat soubory i obrázky jako přílohy, odesílat e‑mail více příjemcům, přidávat vlastní hlavičky a mnoho dalšího. Je nutné definovat připojovací parametry, jako jsou hostitel, port a příznaky pro povolení autentizace a TLS. Následující příklad ukazuje, jak odeslat základní textový e‑mail pomocí SMTP serveru (např. Gmail) v Java aplikaci.
Jak odeslat základní textový e‑mail pomocí SMTP serveru přes 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);
}
}
}
Vyhledávání a filtrování e‑mailů v Java
Open source knihovna JavaMail poskytuje plnou podporu pro vyhledávání e‑mailových zpráv ve složce podle různých kritérií (odesílatel, předmět, datum, příznaky) v Java aplikacích. To je zvláště užitečné při vývoji e‑mailových klientů nebo automatizací. Lze také kombinovat více vyhledávacích podmínek (AND, OR, NOT) pomocí AndTerm, OrTerm, NotTerm. Následující příklad ukazuje, jak vyhledat zprávy od konkrétního odesílatele pomocí Java příkazů.
Jak vyhledat zprávy od konkrétního odesílatele v Java aplikacích?
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();
Podpora protokolů SMTP, IMAP, POP3
Open source JavaMail ve výchozím nastavení podporuje tři nejběžnější e‑mailové protokoly: SMTP (Simple Mail Transfer Protocol) pro odesílání zpráv, POP3 (Post Office Protocol 3) pro jednoduché stahování e‑mailů a IMAP (Internet Message Access Protocol) pro pokročilejší přístup k e‑mailům (složky, částečné načítání). Navíc podporuje zabezpečené varianty jako SMTPS, POP3S, IMAPS a lze jej rozšířit o vlastní poskytovatele.
Pokročilá autentizace a zabezpečení v Java
Open source JavaMail podporuje zabezpečenou komunikaci s e‑mailovými servery, což je v dnešním bezpečnostně citlivém prostředí klíčové. Knihovna podporuje TLS (Transport Layer Security), který šifruje komunikační kanál mezi vaší aplikací a poštovním serverem. Také podporuje SSL (Secure Sockets Layer), předchůdce TLS, který je rovněž využíván pro navázání zabezpečeného spojení. Knihovna rovněž podporuje standardní autentizaci pomocí uživatelského jména a hesla pro připojení k serverům vyžadujícím přihlášení.