Kwiecień
22
2010

Seam: Powiadomienia email

Słowa kluczowe: , | Kategorie: Seam Framework
No Gravatar

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.

Napisz Komentarz

*