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

Отправка писем с помощью Java

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

1. Обзор

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

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

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

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

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

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

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

Конфигурация осуществляется через объект свойств 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");

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

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

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

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

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

Message message = new MimeMessage(session);
message.setFrom(new InternetAddress("from@gmail.com"));
message.setRecipients(
Message.RecipientType.TO, InternetAddress.parse("to@gmail.com"));
message.setSubject("Mail Subject");

String msg = "This is my first email using JavaMailer";

MimeBodyPart mimeBodyPart = new MimeBodyPart();
mimeBodyPart.setContent(msg, "text/html; charset=utf-8");

Multipart multipart = new MimeMultipart();
multipart.addBodyPart(mimeBodyPart);

message.setContent(multipart);

Transport.send(message);

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

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

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

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

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

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

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

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

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

multipart.addBodyPart(attachmentBodyPart);

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

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

5. Форматирование текста электронной почты

Для форматирования и оформления текста электронной почты мы можем использовать теги HTML и CSS. Например, если мы хотим, чтобы наш текст был жирным, мы реализуем тег <b > . Для раскрашивания текста мы можем использовать тег стиля . Мы также можем комбинировать теги HTML с тегами CSS, если хотим иметь дополнительные свойства, такие как полужирный шрифт.

Например, мы можем создать строку , содержащую полужирный красный текст:

String msgStyled = "This is my <b style='color:red;'>bold-red email</b> using JavaMailer";

Эта строка будет содержать наш стилизованный текст для отправки в теле письма.

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

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

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