Статьи

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

Цель

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

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

Вступление

Два года назад мы решили перейти на JEE 6 для наших корпоративных решений и получить массу удовольствия от новых функций и аннотаций EJB 3.1. Glassfish сделал нашу жизнь проще, было очень легко объявлять переменные, используя консоль администрирования.

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

Предпосылки

Перед началом этого урока вы должны:

Полное понимание http://www.oracle.com/webfolder/technetwork/tutorials/obe/java/javamail/javamail.html

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

Иметь базовые знания о сервлетах и ​​CDI (полезно, но не обязательно)

Создать ресурс сеанса почты Java

Чтобы создать и JavaMail Session:

  1. запустить сервер galssfish
  2. открыть консоль администратора (по умолчанию localhost: 4848)
  3. Перейдите в раздел « Ресурсы» -> « Сеансы JavaMail» -> нажмите «Добавить», чтобы добавить новый ресурс javaMail.
  4. убедитесь, что заполнено следующее поле:

  1. Имя Jndi: например, EMailME, позже будет использоваться при поиске ресурса:
    @Resource(lookup = "EMailME")
  2. Mail host
  3. Пользователь по умолчанию
  4. Отправитель по умолчанию будет использоваться позже в mailSession.getProperty («mail.from»)

5- Для безопасной почты добавьте эту расширенную настройку:

1-mail.smtp.password: пароль электронной почты

2-mail.smtp.port: порт электронной почты

3-mail.smtp.auth: правда

Этот скриншот обобщает все эти параметры:

Java Mail Session

II — Использование почтового сервиса

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

1 — MailSessionBean будет компонентом CDI с RequestScope

2- Вставьте полный JavaMail Session как ресурс, а не создавайте его

@Named
@RequestScoped
public class EmailSessionBean {

    @Resource(lookup = "EMailME")
    private Session mailSession;

    public void sendEmail(String to, String subject, String body) {
        MimeMessage message = new MimeMessage(mailSession);
        try {

            message.setFrom(new InternetAddress(mailSession.getProperty("mail.from")));
            InternetAddress[] address = {new InternetAddress(to)};
            message.setRecipients(Message.RecipientType.TO, address);
            message.setSubject(subject);
            message.setSentDate(new Date());
            message.setText(body);

            Transport.send(message);
        } catch (MessagingException ex) {
            ex.printStackTrace();
        }
    }
}

Смотри коротко!

4- EmailServlet напоминает то же самое, за исключением использования @Inject, а не @EJB

@WebServlet(name = "EmailServlet", urlPatterns = {"/EmailServlet"})
public class EmailServlet extends HttpServlet {

    @Inject
    private EmailSessionBean emailBean;

    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
 .........
   }
 ......
}

Вывод

Давайте создадим для нас ES Server manager MailSession, сохраняем конфигурацию на сервере, и благодаря административной консоли Glassfish управление JavaMail Session стало проще.