Gửi email bằng Java

1. Khái quát chung

Trong hướng dẫn nhanh này, chúng ta sẽ xem xét cách gửi email có và không có tệp đính kèm - sử dụng thư viện thư Java cốt lõi.

2. Thiết lập và phụ thuộc dự án

Đối với bài viết này, chúng tôi sẽ sử dụng một dự án dựa trên Maven đơn giản với sự phụ thuộc vào thư viện thư Java:

 javax.mail mail 1.5.0-b01 

Phiên bản mới nhất có thể được tìm thấy ở đây.

3. Gửi Văn bản thuần túy và Email HTML

Đầu tiên, chúng ta cần định cấu hình thư viện bằng thông tin đăng nhập của nhà cung cấp dịch vụ email. Sau đó, chúng tôi sẽ tạo một Phiên sẽ được sử dụng để xây dựng thông điệp của chúng tôi để gửi.

Cấu hình thông qua một đối tượng Thuộc tính Java :

Properties prop = new Properties(); prop.put("mail.smtp.auth", true); prop.put("mail.smtp.starttls.enable", "true"); prop.put("mail.smtp.host", "smtp.mailtrap.io"); prop.put("mail.smtp.port", "25"); prop.put("mail.smtp.ssl.trust", "smtp.mailtrap.io");

Trong cấu hình thuộc tính ở trên, chúng tôi đã định cấu hình máy chủ email là Mailtrap và sử dụng cổng do dịch vụ cung cấp.

Bây giờ hãy tiến xa hơn bằng cách tạo một phiên với tên người dùng và mật khẩu của chúng tôi:

Session session = Session.getInstance(prop, new Authenticator() { @Override protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(username, password); } });

Tên người dùng và mật khẩu được cung cấp bởi nhà cung cấp dịch vụ thư cùng với các thông số máy chủ và cổng.

Bây giờ chúng ta có một đối tượng Phiên thư , hãy tạo Thông báo Mime để gửi:

Message message = new MimeMessage(session); message.setFrom(new InternetAddress("[email protected]")); message.setRecipients( Message.RecipientType.TO, InternetAddress.parse("[email protected]")); message.setSubject("Mail Subject"); String msg = "This is my first email using JavaMailer"; MimeBodyPart mimeBodyPart = new MimeBodyPart(); mimeBodyPart.setContent(msg, "text/html"); Multipart multipart = new MimeMultipart(); multipart.addBodyPart(mimeBodyPart); message.setContent(multipart); Transport.send(message);

Trong đoạn mã trên, đầu tiên chúng tôi tạo một phiên bản thông báo với các thuộc tính cần thiết - đến, từ và chủ đề. Tiếp theo là mimeBodyPart có mã hóa văn bản / html, vì thông điệp của chúng tôi được viết theo kiểu HTML.

Điều tiếp theo chúng tôi đã làm là tạo một thể hiện của đối tượng MimeMultipart mà chúng tôi có thể sử dụng để bọc mimeBodyPart mà chúng tôi đã tạo.

Cuối cùng, chúng ta đặt đối tượng nhiều phần làm nội dung của thư và sử dụng đối tượng send () của Transport để thực hiện việc gửi thư.

Vì vậy, chúng ta có thể nói rằng mimeBodyPart được chứa trong phần nhiều được chứa trong tin nhắn. Do đó, nhiều phần có thể chứa nhiều hơn một mimeBodyPart .

Đây sẽ là trọng tâm của phần tiếp theo.

4. Gửi Email Có Tệp đính kèm

Tiếp theo, để gửi tệp đính kèm, chúng ta chỉ cần tạo một MimeBodyPart khác và đính kèm (các) tệp vào đó:

MimeBodyPart attachmentBodyPart = new MimeBodyPart(); attachmentBodyPart.attachFile(new File("path/to/file"));

Sau đó, chúng ta có thể thêm phần cơ thể mới vào đối tượng MimeMultipart mà chúng ta đã tạo trước đó:

multipart.addBodyPart(attachmentBodyPart);

Đó là tất cả những gì chúng ta cần làm.

Một lần nữa, chúng tôi đặt cá thể nhiều phần làm nội dung của đối tượng tin nhắn và cuối cùng chúng tôi sẽ sử dụng send () để thực hiện việc gửi thư .

5. Kết luận

Kết luận, chúng ta đã thấy cách sử dụng thư viện thư Java gốc để gửi email ngay cả khi có tệp đính kèm.

Như mọi khi, mã nguồn hoàn chỉnh có sẵn trên Github.