1. Обзор
В этом кратком руководстве мы рассмотрим отправку электронной почты с вложениями и без них – с использованием основной библиотеки Java mail.
2. Настройка и зависимость проекта
В этой статье мы будем использовать простой проект на основе Maven с зависимостью от библиотеки Javamail:
javax.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 .