Mail API. Среди распространенных требований, предъявляемых к приложениям уровня Enterprise, следует отметить необходимость отправки электронных писем на стороне сервера. Например, может потребоваться отправить сообщение пользователю после регистрации или смены пароля в системе, или же отправка сообщения с новостной рассылкой. Нет сомнений, что каждый найдет свой случай для применения этой полезной функциональности. Рассматривая стек технологий JavaEE, важно отметить, что все необходимое для отправки электронных писем доступно «из коробки» и можно использовать для любого JavaEE-приложения. Данная технология так же известна, как «Mail API», располагающаяся в пакете «javax.mail». Важно понимать, что JavaEE не решает вопросов создания почтового SMTP-сервера. Для этих целей Вы можете использовать готовые решения, к примеру, любой общедоступный сервер как Gmail, Yandex, Mail и т.д. Для целей отправки писем достаточно знать параметры используемого почтового сервера: имя и порт сервера, параметры соединения. Для безопасной отправки писем также допустимо использование «SSL» и «TLS-протоколов». С помощью «Mail API» можно отправлять не только простые письма, но и включать вложения, прикреплять изображения, документы, использовать HTML-форматирование и т.д. Наиболее значимые сущности для возможности отправки email — это класс Session, инициализирующий основные параметры для соединения с SMTP-сервером, MimeMessage, включающий информацию о получателе письма, теме, теле и вложениях сообщения, а также класс Transport, реализующий непосредственную отправку методом void send(MimeMessage message). Обратите внимание, что количество инициализируемых параметров соединения класса Session напрямую зависит от типа SMTP-сервера. Для серверов, в которых не требуется какой-либо аутентификации, достаточно указать лишь свойство «mail.smtp.host» и оставить без изменения 25й порт, используемый по умолчанию. Но для случаев использования почтовых серверов, поддерживающих SSL или TLS аутентификацию, важно детализировать оба параметра «mail.smtp.host» и «mail.smtp.port». Если рассматривать Gmail в качестве почтового сервера, то в нем используются 465й и 587й порты для SSL и TLS, соответственно (самая актуальная информация о деталях почтового сервера Gmail доступна по ссылке). Взгляните на код метода, обеспечивающего отправку письма, используя TLS-аутентификацию: «public static void sendEmail(final String username, final String password)»

«throws MessagingException {»

«Properties props = new Properties();»

«props.put(„mail.smtp.auth“, „true“);»

«props.put(„mail.smtp.starttls.enable“, „true“);»

«props.put(„mail.smtp.host“, „smtp.gmail.com“);»

«props.put(„mail.smtp.port“, „587“);»

«Session session = Session.getInstance(props,»

«new javax.mail.Authenticator() {»

«protected PasswordAuthentication getPasswordAuthentication() {»

«return new PasswordAuthentication(username, password);»

«}»

«});»

«Message message = new MimeMessage(session);»

«message.setFrom(new InternetAddress(„[email protected]“));»

«message.setRecipients(Message.RecipientType.TO

«InternetAddress.parse(„[email protected]“));»

«message.setSubject(„Your Subject“);»

«message.setText(„This is test email! Don’t answer!“);»

«Transport.send(message);»

«}»

Данный код в особых комментариях особо не нуждается, поэтому для лучшего закрепления материала предлагается реализовать метод, который отправляет email через Gmail, но уже с использованием SSL-аутентификации.