Рубрики
Без рубрики

Отправка электронной почты с помощью Java

Узнайте, как использовать собственную почтовую библиотеку Java для отправки электронных писем с вложениями и без них.

Автор оригинала: baeldung.

1. Обзор

В этом кратком руководстве мы рассмотрим отправку электронной почты с вложениями и без них – с использованием основной библиотеки Java mail.

2. Настройка и зависимость проекта

В этой статье мы будем использовать простой проект на основе Maven с зависимостью от библиотеки Javamail:


    javax.mail
    mail
    1.5.0-b01

Последнюю версию можно найти здесь .

3. Отправка обычного текста и HTML-сообщения по электронной почте

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

Конфигурация осуществляется с помощью объекта Java Properties :

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

В приведенной выше конфигурации свойств мы настроили узел электронной почты как Mailtrap и также используем порт, предоставленный службой.

Теперь давайте двигаться дальше, создав сеанс с вашим именем пользователя и паролем:

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

Имя пользователя и пароль предоставляются поставщиком почтовых услуг вместе с параметрами хоста и порта.

Теперь, когда у нас есть объект mail Session , давайте создадим Mime Сообщение для отправки:

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

В приведенном выше фрагменте мы сначала создали экземпляр message с необходимыми свойствами – to, from и subject. За ним следует mimeBodyPart , который имеет кодировку text/html, так как наше сообщение оформлено в HTML.

Следующее, что мы сделали, – это создали экземпляр объекта MimeMultipart , который мы можем использовать для обертывания созданного нами mimeBodyPart .

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

Таким образом, мы можем сказать, что mimeBodyPart содержится в multipart , который содержится в сообщении . Следовательно, multipart может содержать более одного mimeBodyPart .

Это будет в центре внимания следующего раздела.

4. Отправка электронной почты С вложением

Далее, чтобы отправить вложение, нам нужно только создать еще один MimeBodyPart и прикрепить к нему файл(ы):

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

Затем мы можем добавить новую часть тела в объект MimeMultipart , который мы создали ранее:

multipart.addBodyPart(attachmentBodyPart);

Это все, что нам нужно сделать.

Еще раз мы установим экземпляр multipart в качестве содержимого объекта message и, наконец, мы будем использовать send() для отправки почты .

5. Заключение

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

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