Gửi email có tệp đính kèm trong Java

1. Khái quát chung

Trong hướng dẫn nhanh này, chúng ta sẽ tìm hiểu cách gửi email có một và nhiều tệp đính kèm trong Java bằng cách sử dụng JavaMail API.

2. Thiết lập dự án

Trong bài viết này, chúng tôi đang tạo một dự án Maven đơn giản với phụ thuộc javax.mail :

 javax.mail mail 1.5.0-b01 

3. Gửi thư có tệp đính kèm

Trước tiên, chúng ta cần định cấu hình thông tin đăng nhập của nhà cung cấp dịch vụ email. Sau đó, đối tượng Session được tạo bằng cách cung cấp máy chủ email, cổng, tên người dùng và mật khẩu. Tất cả những chi tiết này được cung cấp bởi dịch vụ lưu trữ email. Chúng tôi có thể sử dụng bất kỳ máy chủ kiểm tra SMTP giả nào cho mã của chúng tôi.

Đối tượng Session sẽ hoạt động như một nhà máy kết nối để xử lý cấu hình và xác thực cho JavaMail .

Bây giờ chúng ta có một đối tượng Session , hãy tiến xa hơn và tạo đối tượng MimeMessageMimeBodyPart . Chúng tôi sử dụng các đối tượng này để tạo thông báo email:

Message message = new MimeMessage(session); message.setFrom(new InternetAddress(from)); message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to)); message.setSubject("Test Mail Subject"); BodyPart messageBodyPart = new MimeBodyPart(); messageBodyPart.setText("Mail Body"); 

Trong đoạn mã trên, chúng tôi đã tạo đối tượng MimeMessage với các chi tiết bắt buộc như from, to và subject. Sau đó, chúng ta có một đối tượng MimeBodyPart với nội dung email.

Bây giờ, chúng ta cần tạo một MimeBodyPart khác để thêm tệp đính kèm vào thư của mình:

MimeBodyPart attachmentPart = new MimeBodyPart(); attachmentPart.attachFile(new File("C:\\Document1.txt")); 

Bây giờ chúng ta có hai đối tượng MimeBodyPart cho một Phiên thư. Vì vậy, chúng ta cần tạo một đối tượng MimeMultipart và sau đó thêm cả hai đối tượng MimeBodyPart vào đó:

Multipart multipart = new MimeMultipart(); multipart.addBodyPart(messageBodyPart); multipart.addBodyPart(attachmentPart); 

Cuối cùng, MimeMultiPart được thêm vào đối tượng MimeMessage khi nội dung thư của chúng tôi và phương thức Transport.send () được gọi để gửi thư:

message.setContent(multipart); Transport.send(message); 

Tóm lại, Thông báo chứa MimeMultiPart mà còn chứa nhiều MimeBodyPart . Đó là cách chúng tôi tập hợp một email hoàn chỉnh.

Hơn nữa, để gửi nhiều tệp đính kèm, bạn có thể chỉ cần thêm một MimeBodyPart khác .

4. Kết luận

Trong hướng dẫn này, chúng ta đã học cách gửi email với một hoặc nhiều tệp đính kèm trong Java.

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