2011-10-16 21 views
6

Tworzę aplikację internetową przy użyciu jsf i priorytetów, a moje pytanie brzmi: jak wysłać wiadomość e-mail za pośrednictwem formularza kontaktowego witryny (zrobiłem to za pomocą php przed, bardzo łatwo, ale nigdy nie używając jsf). Stworzyłem formularz na stronie contact.xhtml, a także klasę bean do obsługi tego, a wszystko, co należy zrobić, to wysłać dane fasoli do predefiniowanej poczty (np. Gmail). Znalazłem również kilka "tutoriali" na temat wysyłania wiadomości e-mail za pomocą JavaMail, ale nic nie działa poprawnie. Sam formularz składa się z pól imienia, nazwiska i adresu e-mail.Wysyłaj pocztę ze strony JSF za pomocą fasoli

Czy ktoś może napisać, jak to zrobić, lub dać mi link. Byłbym bardzo wdzięczny.

Czy potrzebuję mojej witryny do uruchomienia na serwerze (online) lub mogę przetestować ją z localhost.

Z góry dziękuję.

+0

Czy masz serwer SMTP lub przynajmniej nazwę hosta, numer portu oraz dane logowania serwera SMTP? Z jakiego serwera Java EE korzystasz? (Tomcat, Glassfish, itp.). Jest "łatwy" w PHP, ponieważ wiele serwerów hostingowych jest już wstępnie skonfigurowanych. Musisz tylko wywołać funkcję 'mail()'. Lub po prostu musisz wprowadzić konfigurację hosta SMTP w jakimś pliku ini. Tomcat nie obsługuje tej konfiguracji wstępnej (obsługuje tylko JSP/Servlet out, a nie JavaMail, więc sam musisz napisać całą masę kodu), ale Glassfish na przykład obsługuje go (JavaMail jest mianowicie częścią profilu WWW Java EE). – BalusC

+0

Należy zauważyć, że ten problem nie jest ogólnie związany z JSF. Jest to związane z serwerem docelowym i jego konfiguracją.W zależności od tego, możesz po prostu użyć swojego zasobu JNDI JavaMail lub sam musisz napisać dużo kodu standardowego. – BalusC

Odpowiedz

6

W bardzo krótki:

  • dokonać <h:commandButton action="#{yourBean.send}"
  • zrobić zarządzanego fasoli uwagami z @ManagedBean("yourBean") który ma send(..) metodę
  • dostać commons-email i przeczytać jego krótką „instrukcji obsługi”; dostać serwer SMTP roboczą (commons-email zależy JavaMail, więc się, że na ścieżce klasy, jak również)
  • w stosowaniu metody wyślij Commons email do wysyłania wiadomości e-mail

(należy przejść przez JSF samouczek, aby zobaczyć, jak zebrać parametry formularza)

Uwaga: java jest nieco bardziej złożona. "Wysyłaj pocztę przez JSF" nie jest szczególnie dobrym pytaniem. Składa się z dwóch pytań:

  • jak mieć postać złożone z JSF (każdy poradnik wyjaśnia, że)
  • jak wysłać e-mail w języku Java w ogólnym
2

Chodzi przede wszystkim o tym, jak przechwycić wyjście JSF. Moje podejście polega na wywołaniu strony JSF za pośrednictwem JAX-RS, przechwyceniu danych wyjściowych i umieszczeniu ich w wiadomościach e-mail. Staraj się, aby strona była jak najprostsza (JSF lubi dodawać dużo kodu JS) i ustaw bezwzględne adresy URL dla zasobów. Tu jest mój kod (uproszczony):

@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("[email protected]")); 
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); 
Powiązane problemy