Gửi mail trong Java (Bài 8)

Gửi mail trong java sử dụng JavaMail. Đây là một nền tảng và giao thức độc lập được sử dụng để gửi, nhận và đọc mail thông qua ứng dụng Java. Sử dụng JavaMail API này để tạo ra những ứng dụng Java có tính năng hỗ trợ gửi email cho người dùng. Ví dụ sau khi đăng ký thành công một tài khoản, ứng dụng sẽ gửi email thông báo đên người dùng, … Hình bên dưới là một minh hoạ về sử dụng JavaMail.

Gui mail trong java 1

Gửi mail trong java – Kiến trúc JavaMail

JavaMail API tương tác với Service Provider Interface (SPI) để gửi và nhận mail. SPI cung cấp các giao thức dùng để gửi mail như Simple Mail Transfer Protocol (SMTP) và giao thức dùng để nhận mail như Post Office Protocol (POP).

Gui mail trong java 2

Bảng bên dưới mô tả 3 class chính mà JavaMail API định nghĩa

Class Mô tả
Session Đối tượng xác định phiên làm việc
Message Đối tượng xác định các thành phần như from, tosubject, body, …
Transport Sử dụng để gửi message

Gửi mail trong java – Các bước thực hiện

Chuẩn bị:

  • Tải JavaMail API
  • Thêm JavaMail API (javax.mail.jar) vào project: Chuột phải Project -> chọn Properties -> chọn Libraries tại Categories -> chọn Add JAR/Folder

Gui mail trong java 4

  • Tài khoản gmail đã kích hợp tính năng POP: Sau khi đăng nhập vào tài khoản gmail -> chọn Setting -> chọn Forwarding and POP/IMAP

Gui mail trong java 3

Cài đặt

Bước 1: Tạo đối tượng Properties và chỉ định thông tin host, port

Properties p = new Properties();
p.put("mail.smtp.auth", "true");
p.put("mail.smtp.starttls.enable", "true");
p.put("mail.smtp.host", "smtp.gmail.com");
p.put("mail.smtp.port", 587);

Bước 2: Tạo đối tượng Session (phiên làm việc)

Session s = Session.getInstance(p,
 new javax.mail.Authenticator() {
 protected PasswordAuthentication getPasswordAuthentication() {
   return new PasswordAuthentication(accountName, accountPassword);
 }
});

Trong đó accountName accountPassword là tài khoản gmail.

Bước 3: Tạo đối tượng messeage

Message msg = new MimeMessage(s);
msg.setFrom(new InternetAddress(from));
msg.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to));
msg.setSubject(subject);
msg.setText(body);

Bước 4: Gửi mail

Transport.send(msg);

Gửi mail trong java – Bài tập thực hành

Câu 1: Thiết kế giao diện ứng dụng

Gui mail trong java 5

Câu 2: Viết xử lý cho nút Send

  • Các thông tin như Username, Password, To, Subject và Message là bắt buộc nhập.
  • Khi người dùng chọn nút lệnh “Send”, thực hiện gửi mail đến địa chỉ được chỉ định ở To

Lưu ý nếu chương trình phát sinh lỗi “javax.mail.AuthenticationFailedException” trong quá trình chạy thì truy cập link https://www.google.com/settings/security/lesssecureapps và đăng nhập vào tài khoản gmail được dùng để thiết lập và chọn Turn on như hình bên dưới.

Gui mail trong java 6