Перейти к основному содержимому

Отправка писем с вложениями в Java

· 2 мин. чтения

1. Обзор

В этом кратком руководстве мы узнаем, как отправлять электронные письма с одним и несколькими вложениями в Java с помощью JavaMail API.

2. Настройка проекта

В этой статье мы создаем простой проект Maven с зависимостью javax.mail :

<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.5.0-b01</version>
</dependency>

3. Отправка почты с вложениями

Во- первых, нам нужно настроить учетные данные поставщика услуг электронной почты . Затем создается объект сеанса путем предоставления хоста электронной почты, порта, имени пользователя и пароля. Все эти детали предоставляются службой хостинга электронной почты. Мы можем использовать любые поддельные серверы тестирования SMTP для нашего кода.

Объект сеанса будет работать как фабрика соединений для обработки конфигурации и аутентификации для JavaMail .

Теперь, когда у нас есть объект Session , давайте двинемся дальше и создадим объекты MimeMessage и MimeBodyPart . Мы используем эти объекты для создания сообщения электронной почты:

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");

В приведенном выше фрагменте мы создали объект MimeMessage с необходимыми данными, такими как от, до и тема. Затем у нас есть объект MimeBodyPart с телом письма.

Теперь нам нужно создать еще один MimeBodyPart , чтобы добавить вложение в нашу почту:

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

Теперь у нас есть два объекта MimeBodyPart для одного почтового сеанса. Итак, нам нужно создать один объект MimeMultipart, а затем добавить в него оба объекта MimeBodyPart :

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

Наконец, MimeMultiPart добавляется к объекту MimeMessage в качестве содержимого нашей почты, и для отправки сообщения вызывается метод Transport.send() :

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

Подводя итог, сообщение содержит MimeMultiPart , который также содержит несколько MimeBodyPart(s) . Вот как мы собираем полное электронное письмо.

Более того, для отправки нескольких вложений вы можете просто добавить еще один MimeBodyPart .

4. Вывод

В этом руководстве мы узнали, как отправлять электронные письма с одним и несколькими вложениями в Java.

Как всегда, полный исходный код доступен на GitHub .