Как отправлять электронные письма на Java

Обзор Большинство веб-сайтов сегодня предлагают подписку на информационный бюллетень любого типа, чтобы сообщить нам о своих выгодных предложениях, скидках, новых продуктах, услугах и квитанциях. При регистрации на веб-сайте мы также (в большинстве случаев) получаем электронное письмо для подтверждения нашего адреса электронной почты и привязки его к учетной записи, для которой вы регистрируетесь. Это может быть отличной маркетинговой тактикой и действительно может способствовать развитию вашего бизнеса и платформы, поэтому знание того, как создать простую систему для отправки электронных писем, является обязательным, особенно если вы запускаете

Обзор

Большинство веб-сайтов сегодня предлагают подписку на информационный бюллетень любого типа, чтобы сообщить нам о своих выгодных предложениях, скидках, новых продуктах, услугах и квитанциях.

При регистрации на веб-сайте мы также (в большинстве случаев) получаем электронное письмо для подтверждения нашего адреса электронной почты и привязки его к учетной записи, для которой вы регистрируетесь.

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

Для этого мы будем использовать одну из основных библиотек Java - javax.mail .

Отправка обычного текста по электронной почте

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

 public class EmailSender { 
 public static void main(String[] args) { 
 String recipient = " [email protected] "; 
 String sender = " [email protected] "; 
 String host = "localhost"; 
 
 Properties properties = System.getProperties(); 
 properties.setProperty("mail.smtp.host", host); 
 
 Session session = Session.getDefaultInstance(properties); 
 
 try { 
 MimeMessage message = new MimeMessage(session); 
 message.setFrom(new InternetAddress(sender)); 
 message.addRecipient(Message.RecipientType.TO, new InternetAddress(recipient)); 
 message.addRecipients(Message.RecipientType.TO, new Address[...]); // email to multiple recipients 
 message.setSubject("Hello World!"); 
 message.setText("And hello from the body of the message!"); 
 
 Transport.send(message); 
 
 } catch (AddressException e) { 
 e.printStackTrace(); 
 } catch (MessagingException e) { 
 e.printStackTrace(); 
 } 
 } 
 } 

Здесь мы познакомимся с парой классов:

  • Properties - представляет любой набор свойств и значений по умолчанию.
  • Session - собирает свойства и значения по умолчанию, используемые API почты.
  • MimeMessage - представляет сообщение электронной почты в стиле MIME.
  • InternetAddress - представляет интернет-адрес с синтаксисом RFC882 - «[электронная почта защищена]{.cf_email} »

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

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

Отправка электронного письма с помощью HTML немного отличается от предыдущего примера всего в одной строке:

 public class EmailSender { 
 
 public static void main(String[] args) { 
 String recipient = " [email protected] "; 
 String sender = " [email protected] "; 
 String host = "localhost"; 
 
 Properties properties = System.getProperties(); 
 properties.setProperty("mail.smtp.host", host); 
 
 Session session = Session.getDefaultInstance(properties); 
 
 try { 
 MimeMessage message = new MimeMessage(session); 
 message.setFrom(new InternetAddress(sender)); 
 message.addRecipient(Message.RecipientType.TO, new InternetAddress(recipient)); 
 message.setSubject("Hello World!"); 
 
 message.setContent("<h1>Message Header</h1>" + 
 "<p>This is a paragraph </p>" + 
 "<p>This is another paragraph</p>", "text/html"); 
 
 Transport.send(message); 
 
 } catch (AddressException e) { 
 e.printStackTrace(); 
 } catch (MessagingException e) { 
 e.printStackTrace(); 
 } 
 } 
 } 

Используя метод .setContent() и задав тип text/html , мы можем добавить HTML в наше электронное сообщение.

Метод принимает либо MultiPart либо объект / строку и просто устанавливает аргументы как содержимое сообщения.

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

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

Если для вашего продукта или услуги требуются юридические документы, клиент также может получить юридический документ, который нужно подписать и отправить обратно, причем все это можно сделать по электронной почте.

В любом из этих случаев это требует немного другого подхода, чем в наших предыдущих примерах:

 public class EmailSender { 
 
 public static void main(String[] args) { 
 String recipient = " [email protected] "; 
 String sender = " [email protected] "; 
 String host = "localhost"; 
 
 Properties properties = System.getProperties(); 
 properties.setProperty("mail.smtp.host", host); 
 
 Session session = Session.getDefaultInstance(properties); 
 
 try { 
 MimeMessage message = new MimeMessage(session); 
 message.setFrom(new InternetAddress(sender)); 
 message.addRecipient(Message.RecipientType.TO, new InternetAddress(recipient)); 
 message.setSubject("Receipt for your product!"); 
 
 BodyPart messageBodyPart = new MimeBodyPart(); 
 messageBodyPart.setText("Thank you for buying with us, here's a receipt for your product."); 
 
 Multipart multipart = new MimeMultipart(); 
 multipart.addBodyPart(messageBodyPart); 
 
 messageBodyPart = new MimeBodyPart(); 
 DataSource source = new FileDataSource("receipt.txt"); 
 multipart.addBodyPart(messageBodyPart); 
 
 message.setContent(multipart); 
 
 Transport.send(message); 
 
 } catch (AddressException e) { 
 e.printStackTrace(); 
 } catch (MessagingException e) { 
 e.printStackTrace(); 
 } 
 } 
 } 

Здесь мы познакомимся с несколькими новыми классами:

  • BodyPart - Абстрактный класс , который представляет собой часть Multipart
  • Multipart - контейнер для нескольких объектов BodyPart
  • DataSource - предоставляет тип для произвольного набора данных, а также доступ к нему в форме InputStreams и OutputStreams

При добавлении Multipart качестве содержимого мы можем добавить в него столько BodyParts , а после добавления одного мы можем использовать ту же ссылочную переменную для инициализации новой, а также сохранить ее в Multipart .

Заключение

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

comments powered by Disqus

Содержание