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

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

1. обзор

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

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

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


    javax.mail
    mail
    1.5.0-b01

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

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

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

Конфигурация осуществляется через объект JavaProperties :

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

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

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

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. За ним следуетmimeBodyPartt, который имеет кодировкуtext/html,, поскольку наше сообщение оформлено в стиле HTML.

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

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

So, we can say that the mimeBodyPartis contained in the multipart that is contained in the message. Hence, a multipart can contain more than one mimeBodyPart.

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

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

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

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

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

multipart.addBodyPart(attachmentBodyPart);

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

Once again, we set the multipart instance as the content of the message object and finally we’ll use the send() to do the mail sending.

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

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

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