API Java ฟรีสำหรับการส่งอีเมลแบบง่ายและแบบ HTML

Open Source Java Email Processing API เพื่อสร้างและส่งข้อความอีเมลแบบข้อความและแบบ HTML พร้อมไฟล์แนบ, รูปภาพฝัง, รองรับโปรโตคอล SMTP, IMAP, POP3 และการสนับสนุนความปลอดภัยขั้นสูง

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

<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 และยังใช้ได้สำหรับการตั้งค่าการเชื่อมต่อที่ปลอดภัย ไลบรารียังรองรับการรับรองความถูกต้องแบบชื่อผู้ใช้/รหัสผ่านมาตรฐานเพื่อเชื่อมต่อกับเซิร์ฟเวอร์ที่ต้องการการล็อกอิน

 ไทย