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 .