API رایگان جاوا برای ارسال ایمیلهای ساده و مبتنی بر HTML
API پردازش ایمیل جاوا منبع باز برای ایجاد و ارسال پیامهای ایمیل متنی و مبتنی بر HTML با پیوستها، تصاویر جاسازیشده، پشتیبانی از پروتکلهای SMTP، IMAP، POP3 و امنیت پیشرفته.
JavaMail چیست؟
در دنیای برنامههای سازمانی و سیستمهای خودکار، توانایی ارسال و دریافت ایمیلها بهصورت برنامهنویسی شده فقط یک راحتی نیست—یک ضرورت است. از ارسال بازنشانی رمز عبور و تأیید سفارش تا پردازش تیکتهای پشتیبانی ورودی، یکپارچهسازی ایمیل یک ویژگی اصلی است. برای توسعهدهندگان جاوا، ستون فقرات این قابلیت، API قوی و منبع باز JavaMail بوده است. این صفحه محصول جامع به بررسی API JavaMail، ویژگیهای قدرتمند آن میپردازد و مثالهای کد عملی برای شروع یکپارچهسازی ایمیل در برنامههای جاوا شما ارائه میدهد.
API JavaMail یک چارچوب منبع باز بالغ است که توسط Oracle (سابقاً Sun Microsystems) ارائه شده و چارچوبی مستقل از پلتفرم و پروتکل برای ساخت برنامههای ایمیل و پیامرسانی فراهم میکند. این API استاندارد برای کار با ایمیل در اکوسیستم جاوا است. این چارچوب پیچیدگیهای پروتکلهای زیرین ایمیل مانند SMTP، POP3 و IMAP را انتزاع میکند و به توسعهدهندگان امکان کار با یک رابط شیءگرا و تمیز را میدهد. ویژگیهای مهمی که در این کتابخانه وجود دارد شامل ایجاد و ارسال ایمیلهای HTML، افزودن پیوستها، درج تصاویر درونخطی، محتوای چندبخشی، احراز هویت و امنیت قوی، پشتیبانی از ایمیلهای مبتنی بر پوشه، جستجو و فیلتر پیشرفته ایمیل، خواندن ایمیلها از طریق SMTP و غیره میباشد.
شروع کار با JavaMail
در ابتدا، باید JDK 1.6 یا بالاتر را نصب کنید. سپس وابستگی Maven زیر را در فایل pom.xml اضافه کنید.
Maven Dependency
<dependency>
<groupId>com.sun.mail</groupId>s;
<artifactId>javax.mail</artifactId>
<version>1.6.2</version>
</dependency>
میتوانید کتابخانه را مستقیماً از صفحه GitHub دانلود کنید.
ارسال پیام ایمیل با کتابخانه جاوا
کتابخانه منبع باز JavaMail امکان ایجاد و ارسال پیامهای ایمیل ساده و همچنین HTML را در برنامههای جاوا فراهم میکند. توسعهدهندگان میتوانند ایمیلهای موجود را بخوانند، فایلها و تصاویر را بهعنوان پیوست اضافه کنند، ایمیل را برای چندین کاربر ارسال کنند، هدرهای سفارشی اضافه کنند و موارد دیگر. برای این کار باید پارامترهای اتصال مانند میزبان، پورت و پرچمهای فعالسازی احراز هویت و TLS را تعریف کنید. مثال زیر نحوه ارسال یک ایمیل متنی ساده با استفاده از سرور SMTP (مانند Gmail) را در برنامههای جاوا نشان میدهد.
چگونه یک ایمیل متنی ساده را با استفاده از سرور SMTP از طریق 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);
}
}
}
جستجو و فیلتر ایمیل با جاوا
کتابخانه منبع باز JavaMail پشتیبانی کامل از جستجوی پیامهای ایمیل در یک پوشه بر اساس معیارهای مختلف (فرستنده، موضوع، تاریخ، پرچمها) را در برنامههای جاوا فراهم میکند. این قابلیت بهویژه هنگام توسعه کلاینتهای ایمیل یا خودکارسازیها مفید است. میتوانید چندین شرط جستجو (AND، OR، NOT) را با استفاده از AndTerm، OrTerm، NotTerm ترکیب کنید. مثال زیر نشان میدهد چگونه پیامهای ارسالی از یک فرستنده خاص را با دستورات جاوا جستجو کنید.
چگونه پیامها را از یک فرستنده خاص در برنامههای جاوا جستجو کنیم؟
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 نیز پشتیبانی میشوند و میتوان آن را برای ارائهدهندگان سفارشی گسترش داد.
احراز هویت و امنیت پیشرفته با جاوا
JavaMail ارتباط امن با سرورهای ایمیل را پشتیبانی میکند که در محیطهای امروز حساس به امنیت بسیار مهم است. این کتابخانه از TLS (Transport Layer Security) برای رمزنگاری کانال ارتباطی بین برنامه شما و سرور ایمیل استفاده میکند. همچنین از SSL (Secure Sockets Layer) که پیشساز TLS است، برای برقراری اتصال امن پشتیبانی میکند. کتابخانه همچنین احراز هویت استاندارد نام کاربری/رمز عبور را برای اتصال به سرورهایی که نیاز به ورود دارند، پشتیبانی میکند.