Отправка почты со страницы JSF с использованием бобов - PullRequest
6 голосов
/ 17 октября 2011

Я создаю веб-приложение, используя jsf и primefaces, и мой вопрос заключается в том, как отправить электронное письмо через контактную форму сайта (я делал это раньше с помощью php, очень легко, но никогда не использовал jsf). Я создал форму на странице contact.xhtml, а также класс бинов для поддержки этого, и все, что должна сделать эта форма, - это отправить данные бина на заранее определенную почту (т. Е. Gmail). Я также нашел несколько «учебников» о том, как отправлять электронную почту с помощью JavaMail, но, похоже, ничего не работает должным образом. Сама форма состоит из полей имени, адреса электронной почты и сообщения.

Может кто-нибудь написать, как это сделать, или дать мне ссылку. Я был бы очень благодарен.

Нужно ли, чтобы мой сайт работал на (онлайн) сервере, или я могу проверить его с localhost.

Заранее спасибо.

Ответы [ 3 ]

6 голосов
/ 17 октября 2011

Короче говоря:

  • сделать <h:commandButton action="#{yourBean.send}"
  • делает управляемый бин аннотированным @ManagedBean("yourBean"), который имеет send(..) метод
  • получить commons-email и прочитать его краткое «Руководство пользователя»; получить работающий SMTP-сервер (обыкновенная электронная почта зависит от JavaMail, так что получайте это и на пути к классам)
  • в методе отправки используйте commons-email для отправки электронного письма

(Вы должны пройти учебник по JSF, чтобы узнать, как собрать параметры формы)

Обратите внимание, что Java немного сложнее. «Отправить почту через JSF» - не очень хороший вопрос. Он состоит из двух вопросов:

  • как отправить форму в JSF (каждый учебник объясняет это)
  • как отправить электронную почту на Java в целом
2 голосов
/ 26 октября 2014

Это все о том, как захватить вывод JSF.Мой подход заключается в том, чтобы просто вызвать страницу JSF через JAX-RS, захватить вывод и поместить его в электронную почту.Будьте осторожны, чтобы сделать страницу максимально простой (JSF любит добавлять много кода JS) и устанавливать абсолютные URL-адреса для ресурсов.Вот мой код (упрощенно):

@Resource(name = "mail/mySession")
Session mailSession;

//make request, capture output
Client client = ClientBuilder.newClient();
String htmlBody = 
        client.target("http://localhost:8080/AppName/jsfpage.xhtml")
        .queryParam("id", 10) //we can add some params
        .request()
        .get(String.class);

//send email
Message message = new MimeMessage(mailSession);
message.setFrom();
message.setRecipients(Message.RecipientType.TO, InternetAddress.parse("asd@asd.pl"));
message.setHeader("X-Mailer", "JavaMail");
message.setSubject("Subject here");
message.setContent(htmlBody, "text/html; charset=utf-8"); //set captured html as content
message.setSentDate(new Date());
Transport.send(message);
1 голос
/ 17 апреля 2012

На моей практике SEAM Mail действительно помогает в отправке почты.

Здесь вы можете найти хороший учебник:

Отправка почты от JSF - Шовная почта

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...