Gửi Email trong Java
Gửi một Email sử dụng Ứng dụng Java là đơn giản, và để bắt đầu, bạn nên có JavaMail API và Java Activation Framework (JAF) được cài đặt trên thiết bị của bạn.
Bạn có thể tải phiên bản mới nhất của JavaMail (Version 1.2) từ Website chuẩn của Java.
Bạn có thể tải phiên bản mới nhất của JAF (Version 1.1.1) từ Website chuẩn của Java.
Download và unzip những file này, trong các thư mục cấp độ cao nhất đã được tạo mới nhất, bạn sẽ tìm thấy một số jar file cho cả hai ứng dụng. Bạn cần thêm các file là mail.jar và activation.jar vào trong CLASSPATH của bạn.
Gửi một Email đơn giản trong Java
Dưới đây là ví dụ để gửi một Email đơn giản từ thiết bị của bạn. Giả sử rằng localhost của bạn được kết nối internet và có khả năng để gửi một Email.
// TenFile SendEmail.java import java.util.*; import javax.mail.*; import javax.mail.internet.*; import javax.activation.*; public class SendEmail { public static void main(String [] args) { // Email ID cua nguoi nhan can duoc de cap den. String to = "abcd@gmail.com"; // Email ID cua nguoi gui can duoc de cap den String from = "web@gmail.com"; // Gia su ban dang gui email tu localhost String host = "localhost"; // Lay cac system properties Properties properties = System.getProperties(); // Thiet lap mail server properties.setProperty("mail.smtp.host", host); // Lay doi tuong Session mac dinh. Session session = Session.getDefaultInstance(properties); try{ // Tao mot doi tuong MimeMessage mac dinh. MimeMessage message = new MimeMessage(session); // Set From: header field. message.setFrom(new InternetAddress(from)); // Set To: header field. message.addRecipient(Message.RecipientType.TO, new InternetAddress(to)); // Set Subject: header field message.setSubject("Day la dong Subject!"); // Bay gio thiet lap message thuc su message.setText("Day la message thuc su"); // Send message Transport.send(message); System.out.println("Gui message thanh cong...."); }catch (MessagingException mex) { mex.printStackTrace(); } } }
Biên dịch và chạy chương trình trên sẽ gửi một Email đơn giản trong Java:
$ java SendEmail Gui message thanh cong....
Nếu bạn muốn gửi một Email tới nhiều người nhận, thì phương thức sau sẽ được sử dụng để xác định nhiều Email ID:
void addRecipients(Message.RecipientType type, Address[] addresses) throws MessagingException
Miêu tả về tham số của phương thức trên trong Java:
type: Nó sẽ được thiết lập là TO, CC hoặc BCC. Với CC biểu diễn Carbon Copy và BCC biểu diễn Black Carbon Copy. Ví dụ: Message.RecipientType.TO
addresses: Đây là mảng của Email ID. Bạn sẽ cần sử dụng phương thức InternetAdderss() trong khi xác định các Email ID.
Gửi một HTML Email trong Java
Ví dụ dưới đây để gửi một HTML Email trong Java từ thiết bị của bạn. Giả sử rằng localhost của bạn được kết nối internet và có khả năng để gửi một Email.
Ví dụ này tương tự như ví dụ trước, ngoại trừ, ở đây chúng ta sử dụng phương thức setContent() để thiết lập content của tham số thứ hai là "text/htm" để xác định rằng nội dung HTML được bao trong thông báo.
Sử dụng ví dụ này, bạn có thể gửi nội dung HTML lớn bao nhiêu tùy thích.
// File Name SendHTMLEmail.java import java.util.*; import javax.mail.*; import javax.mail.internet.*; import javax.activation.*; public class SendHTMLEmail { public static void main(String [] args) { // Email ID cua nguoi nhan can duoc de cap. String to = "abcd@gmail.com"; // Email ID cua nguoi gui can duoc de cap String from = "web@gmail.com"; // Gia su ban gui email tu localhost String host = "localhost"; // Lay system properties Properties properties = System.getProperties(); // Thiet lap mail server properties.setProperty("mail.smtp.host", host); // Lay doi tuong Session mac dinh. Session session = Session.getDefaultInstance(properties); try{ // Tao doi tuong MimeMessage mac dinh. MimeMessage message = new MimeMessage(session); // Set From: header field. message.setFrom(new InternetAddress(from)); // Set To: header field. message.addRecipient(Message.RecipientType.TO, new InternetAddress(to)); // Set Subject: header field message.setSubject("Day la dong Subject!"); // Send the actual HTML message, as big as you like message.setContent("<h1>Day la message thuc su</h1>", "text/html" ); // Send message Transport.send(message); System.out.println("Gui message thanh cong...."); }catch (MessagingException mex) { mex.printStackTrace(); } } }
Biên dịch và chạy chương trình này để gửi một HTML Email:
$ java SendHTMLEmail Gui message thanh cong....
Gửi đính kèm trong Email trong Java
Ví dụ này để gửi một Email với đính kèm (attachment) trong Java từ thiết bị của bạn. Giả sử rằng localhost của bạn được kết nối internet và có khả năng để gửi một Email.
// File Name SendFileEmail.java import java.util.*; import javax.mail.*; import javax.mail.internet.*; import javax.activation.*; public class SendFileEmail { public static void main(String [] args) { // Email ID cua nguoi nhan can duoc de cap. String to = "abcd@gmail.com"; // Email ID cua nguoi gui can duoc de cap String from = "web@gmail.com"; // Gia su ban gui email tu localhost String host = "localhost"; // Lay system properties Properties properties = System.getProperties(); // Thiet lap mail server properties.setProperty("mail.smtp.host", host); // Lay doi tuong Session mac dinh. Session session = Session.getDefaultInstance(properties); try{ // Tao doi tuong MimeMessage mac dinh. MimeMessage message = new MimeMessage(session); // Set From: header field. message.setFrom(new InternetAddress(from)); // Set To: header field. message.addRecipient(Message.RecipientType.TO, new InternetAddress(to)); // Set Subject: header field message.setSubject("Day la dong Subject!"); // Tao message BodyPart messageBodyPart = new MimeBodyPart(); // Phan than message messageBodyPart.setText("Day la phan than message"); // Tao mot multipar message Multipart multipart = new MimeMultipart(); // Thiet lap phan text message multipart.addBodyPart(messageBodyPart); // Phan hai la attachment messageBodyPart = new MimeBodyPart(); String filename = "file.txt"; DataSource source = new FileDataSource(filename); messageBodyPart.setDataHandler(new DataHandler(source)); messageBodyPart.setFileName(filename); multipart.addBodyPart(messageBodyPart); // Gui cac phan day du cua message message.setContent(multipart ); // Gui message Transport.send(message); System.out.println("Gui message thanh cong...."); }catch (MessagingException mex) { mex.printStackTrace(); } } }
Biên dịch và thực thi chương trình này để gửi một Email với đính kèm:
$ java SendFileEmail Gui message thanh cong....
Xác nhận người dùng trong Java
Nếu nó được yêu cầu để cung cấp ID và Password người sử dụng tới một Email Server với mục đích xác nhận, thì bạn có thể thiết lập các thuộc tính này như sau:
props.setProperty("mail.user", "myuser"); props.setProperty("mail.password", "mypwd");
Phần còn lại của kỹ thuật gửi Email sẽ như phần giải thích ở trên.
Đã có app VietJack trên điện thoại, giải bài tập SGK, SBT Soạn văn, Văn mẫu, Thi online, Bài giảng....miễn phí. Tải ngay ứng dụng trên Android và iOS.
Theo dõi chúng tôi miễn phí trên mạng xã hội facebook và youtube:Các bạn có thể mua thêm khóa học JAVA CORE ONLINE VÀ ỨNG DỤNG cực hay, giúp các bạn vượt qua các dự án trên trường và đi thực tập doanh nghiệp với Java. Khóa học có giá chỉ 400K, nhằm ưu đãi, tạo điều kiện cho sinh viên cho thể mua khóa học.
Nội dung khóa học gồm 16 chuơng và 100 video cực hay, học trực tiếp tại https://www.udemy.com/tu-tin-di-lam-voi-kien-thuc-ve-java-core-toan-tap/ Bạn nào có nhu cầu mua, inbox trực tiếp chị Thu, trợ lý anh Tuyền để hỗ trợ thanh toán qua mã QR ngân hàng Việt Nam, fb: https://www.facebook.com/Thule.59
Anh Tuyền, tác giả khóa học, là cựu sinh viên chương trình đào tạo kĩ sư tài năng của đại học Bách Khoa Hà Nội với hơn 5 năm kinh nghiệm đi làm thực tế doanh nghiệp và cũng là Founder website vietjack.com, web giáo dục phổ biến nhất Việt Nam hiện tại (năm 2024). Java cũng là ngôn ngữ lập trình dễ đi xin việc nhất hiện tại, với mức lương cao, hãy nâng cao kiến thức IT của bản thân mình vì một Việt Nam giàu mạnh.
Loạt bài hướng dẫn của chúng tôi dựa một phần trên nguồn tài liệu của: Tutorialspoint.com
Bài học Java phổ biến tại vietjack.com: