Seam: Powiadomienia email
Dzisiejszy artykuł stanowi jedynie wstęp do bardziej zaawansowanych zagadnień dotyczących poczty elektronicznej w Seam Framework. Opiszę tutaj podstawową konfigurację oraz wysyłanie prostej wiadomości email – kwestie kluczowe z punktu widzenia tematyki kolejnych wpisów.
Obsługa poczty w Seam realizowana jest za pośrednictwem biblioteki JavaMail. Dlatego do projektu (albo do bibliotek serwera) należy dodać archiwum mail.jar.
Podstawowa konfiguracja serwera poczty wychodzącej powinna znaleźć się w pliku components.xml:
<mail:mail-session
host="smtp.foo.com"
port="25"
username="fooUser"
password="fooPassword"/>
Wysłanie wiadomości odbywa się poprzez przetworzenie odpowiedniego widoku zawartego w pliku XHTML. Poniżej przedstawiam przykładowy widok mail.xhtml:
<!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<m:message
charset="UTF-8"
xmlns="http://www.w3.org/1999/xhtml"
xmlns:m="http://jboss.com/products/seam/mail">
<m:from name="#{mailBean.fromName}" address="#{mailBean.fromEmail}"/>
<m:to name="#{mailBean.toName}">#{mailBean.toEmail}</m:to>
<m:subject>#{mailBean.subject}</m:subject>
<m:body>
<p>
#{mailBean.body}
</p>
<p>--</p>
<p><small>#{mailBean.signature}</small></p>
</m:body>
</m:message>
Zawarte w przykładzie dane nadawcy i adresata oraz temat i treść wiadomości pobierane są z komponentu mailBean, ale nic nie stoi na przeszkodzie, aby zostały wpisane na stałe do widoku. Tak jak w przypadku zwykłych stron JSF czy dokumentów PDF, także w wiadomościach email można dowolnie łączyć czysty tekst z wyrażeniami Expression Language (#{…}).
Przekierowanie na stronę mail.seam powinno zakończyć się wysłaniem przygotowanej wcześniej wiadomości. Wówczas jednak w przeglądarce pojawi się pusta strona. Aby temu zapobiec, można przetworzyć widok używając komponentu renderer (org.jboss.seam.faces.Renderer):
@In(create=true) private Renderer renderer;
Wysłanie wiadomości odbywa się poprzez wywołanie metody render():
public void send() {
// …
renderer.render("/mail.xhtml");
}
Oczywiście przed dokonaniem wysyłki należy pamiętać, aby ustawić prawidłowe wartości odpowiednich właściwości komponentu mailBean.



