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.
Apa itu JavaMail?
Dalam dunia aplikasi perusahaan dan sistem automatik, keupayaan untuk menghantar dan menerima e-mel secara programatik bukan sekadar kemudahan—ia merupakan keperluan. Dari menghantar set semula kata laluan dan pengesahan pesanan hingga memproses tiket sokongan yang masuk, integrasi e-mel adalah ciri teras. Bagi pembangun Java, asas fungsi ini ialah API JavaMail yang kukuh dan sumber terbuka. Halaman produk yang komprehensif ini akan meneliti API JavaMail, ciri-ciri berkuasanya, serta menyediakan contoh kod praktikal untuk membantu anda memulakan integrasi e-mel dalam aplikasi Java anda.
API JavaMail ialah kerangka kerja matang, sumber terbuka yang disediakan oleh Oracle (dahulu Sun Microsystems) yang menawarkan kerangka kerja bebas platform dan bebas protokol untuk membina aplikasi mel dan pemesejan. Ia merupakan API piawai untuk mengendalikan e-mel dalam ekosistem Java. Ia menyembunyikan kerumitan protokol e-mel asas seperti SMTP, POP3, dan IMAP, membolehkan pembangun bekerja dengan antara muka berorientasikan objek yang bersih. Terdapat pelbagai ciri penting dalam perpustakaan ini, seperti mencipta dan menghantar e-mel HTML, menambah lampiran, menyisipkan imej terbenam, kandungan berbilang bahagian, sokongan pengesahan kuat dan keselamatan, sokongan e-mel berasaskan folder, keupayaan mencari dan menapis e-mel yang lebih baik, membaca e-mel melalui SMTP, dan sebagainya.
Mula Menggunakan JavaMail
Pertama sekali, anda perlu memasang JDK 1.6 atau lebih tinggi. Anda perlu menambah kebergantungan Maven berikut dalam pom.xml.
Maven Dependency
<dependency>
<groupId>com.sun.mail</groupId>s;
<artifactId>javax.mail</artifactId>
<version>1.6.2</version>
</dependency>
Anda boleh memuat turun perpustakaan secara langsung dari GitHub halaman.
Penghantaran Mesej E-mel melalui Perpustakaan Java
Perpustakaan JavaMail sumber terbuka telah menyertakan sokongan untuk mencipta dan menghantar mesej e-mel ringkas serta HTML di dalam aplikasi Java. Pembangun perisian boleh membaca e-mel sedia ada, menambah fail serta imej sebagai lampiran, menghantar e-mel kepada pelbagai pengguna, menambah pengepala tersuai, dan banyak lagi. Anda perlu menentukan parameter sambungan seperti host, port, dan bendera untuk mengaktifkan pengesahan serta TLS. Contoh berikut menunjukkan cara menghantar e-mel teks biasa menggunakan pelayan SMTP (seperti Gmail) dalam aplikasi Java.
Bagaimana Menghantar E-mel Teks Biasa menggunakan Pelayan SMTP melalui 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);
}
}
}
Pencarian & Penapisan E-mel melalui Java
Perpustakaan JavaMail sumber terbuka telah menyertakan sokongan penuh untuk mencari mesej e-mel dalam folder mengikut pelbagai kriteria (pengirim, subjek, tarikh, bendera) dalam aplikasi Java. Ini sangat berguna apabila membangunkan klien e-mel atau automasi. Anda juga boleh menggabungkan pelbagai istilah carian (AND, OR, NOT) melalui AndTerm, OrTerm, NotTerm. Contoh berikut menunjukkan cara mencari mesej daripada pengirim tertentu menggunakan arahan Java.
Bagaimana Mencari Mesej daripada Pengirim Tertentu dalam Aplikasi 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();
Sokongan Protokol SMTP, IMAP, POP3
JavaMail sumber terbuka secara lalai menyokong tiga protokol e-mel yang paling umum, seperti SMTP (Simple Mail Transfer Protocol) untuk menghantar mesej, POP3 (Post Office Protocol 3) untuk pengambilan e-mel ringkas dan IMAP (Internet Message Access Protocol) untuk akses e-mel yang lebih maju (folder, pengambilan separa). Selain itu, ia juga menyokong varian selamat seperti SMTPS, POP3S, IMAPS, dan boleh diperluas kepada penyedia khusus.
Pengesahan dan Keselamatan Lanjutan melalui Java
JavaMail sumber terbuka menyokong komunikasi selamat dengan pelayan e-mel, yang penting dalam persekitaran yang peka keselamatan masa kini. Perpustakaan ini menyokong TLS (Transport Layer Security) yang menyulitkan saluran komunikasi antara aplikasi anda dan pelayan mel. Ia juga menyokong SSL (Secure Sockets Layer) yang merupakan pendahulu TLS, dan juga disokong untuk menubuhkan sambungan selamat. Perpustakaan ini juga menyokong pengesahan standard nama pengguna/kata laluan untuk menyambung ke pelayan yang memerlukan log masuk.