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.
Che cos'è JavaMail?
Nel mondo delle applicazioni aziendali e dei sistemi automatizzati, la capacità di inviare e ricevere email in modo programmatico non è solo una comodità, è una necessità. Dall'invio di reimpostazioni password e conferme d'ordine all'elaborazione di ticket di supporto in arrivo, l'integrazione email è una funzionalità fondamentale. Per gli sviluppatori Java, il pilastro di questa funzionalità è stato il robusto e open‑source JavaMail API. Questa pagina prodotto completa esplorerà il JavaMail API, le sue potenti funzionalità e fornirà esempi di codice pratici per avviare l'integrazione email nelle tue applicazioni Java.
Il JavaMail API è un framework maturo e open source fornito da Oracle (ex Sun Microsystems) che offre un ambiente indipendente dalla piattaforma e dal protocollo per costruire applicazioni di posta e messaggistica. È l'API standard per la gestione delle email nell'ecosistema Java. Astrae le complessità dei protocolli di posta sottostanti come SMTP, POP3 e IMAP, consentendo agli sviluppatori di lavorare con un'interfaccia pulita e orientata agli oggetti. Tra le numerose funzionalità della libreria troviamo la creazione e l'invio di email HTML, l'aggiunta di allegati, l'inserimento di immagini inline, contenuti multipart, supporto a forte autenticazione e sicurezza, gestione della posta basata su cartelle, ricerca e filtraggio avanzati, lettura delle email via SMTP, e molto altro.
Iniziare con JavaMail
Per prima cosa, è necessario installare JDK 1.6 o superiore. È necessario aggiungere la seguente dipendenza Maven nel file pom.xml.
Dipendenza Maven
<dependency>
<groupId>com.sun.mail</groupId>s;
<artifactId>javax.mail</artifactId>
<version>1.6.2</version>
</dependency>
Puoi scaricare la libreria direttamente dalla pagina GitHub.
Invio di Messaggi Email tramite Libreria Java
La libreria open source JavaMail include il supporto per creare e inviare messaggi email semplici così come messaggi HTML all'interno di applicazioni Java. Gli sviluppatori possono leggere email esistenti, aggiungere file e immagini come allegati, inviare email a più destinatari, aggiungere intestazioni personalizzate e molto altro. È necessario definire i parametri di connessione come host, porta e flag per abilitare l'autenticazione e TLS. L'esempio seguente dimostra come inviare una semplice email di testo puro usando un server SMTP (ad esempio Gmail) all'interno di applicazioni Java.
Come inviare una semplice email di testo puro usando un server SMTP tramite API Java?
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);
}
}
}
Ricerca e Filtraggio Email tramite Java
La libreria open source JavaMail include il supporto completo per la ricerca di messaggi email in una cartella mediante vari criteri (mittente, oggetto, data, flag) all'interno di applicazioni Java. Questo è particolarmente utile quando si sviluppano client di posta o automazioni. È inoltre possibile combinare più termini di ricerca (AND, OR, NOT) tramite AndTerm, OrTerm, NotTerm. L'esempio seguente dimostra come cercare messaggi da un mittente specifico usando comandi Java.
Come cercare messaggi da un mittente specifico all'interno di app 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();
Supporto ai protocolli SMTP, IMAP, POP3
JavaMail open source supporta per impostazione predefinita i tre protocolli email più comuni, come SMTP (Simple Mail Transfer Protocol) per l'invio di messaggi, POP3 (Post Office Protocol 3) per il recupero semplice di email e IMAP (Internet Message Access Protocol) per un accesso più avanzato (cartelle, recupero parziale). Inoltre supporta varianti sicure come SMTPS, POP3S, IMAPS e può essere esteso a provider personalizzati.
Autenticazione avanzata e sicurezza tramite Java
JavaMail open source supporta la comunicazione sicura con i server di posta, fondamentale nell'ambiente attuale attento alla sicurezza. La libreria supporta TLS (Transport Layer Security) che cripta il canale di comunicazione tra la tua applicazione e il server di posta. Supporta anche SSL (Secure Sockets Layer), predecessore di TLS, anch'esso disponibile per stabilire una connessione sicura. Inoltre la libreria supporta l'autenticazione standard username/password per connettersi a server che richiedono il login.