java/nekurak.net-ejb/src/java/cz/frantovo/nekurak/email/Postak.java
author František Kučera <franta-hg@frantovo.cz>
Tue Mar 23 12:11:04 2010 +0100 (2010-03-23)
changeset 82 df86ad0c0e55
parent 81 4dddecffde5c
child 85 063871cec626
permissions -rw-r--r--
Registrační e-mail pošleme lokalizovaný do jazyka,
ve kterém uživatel vyplňoval registrační formulář.
     1 package cz.frantovo.nekurak.email;
     2 
     3 import cz.frantovo.nekurak.vyjimky.NekurakVyjimka;
     4 import java.util.logging.Logger;
     5 import java.util.regex.Pattern;
     6 import javax.annotation.Resource;
     7 import javax.ejb.LocalBean;
     8 import javax.ejb.Stateless;
     9 import javax.mail.Message.RecipientType;
    10 import javax.mail.Session;
    11 import javax.mail.Transport;
    12 import javax.mail.internet.MimeMessage;
    13 
    14 /**
    15  * Nízkoúrovňová komponenta sloužící k odesílání e-mailů.
    16  * @author fiki
    17  */
    18 @Stateless
    19 @LocalBean
    20 public class Postak {
    21 
    22     @Resource(lookup = "mail/nekurak.net")
    23     Session smtpRelace;
    24     private static final Logger log = Logger.getLogger(Postak.class.getSimpleName());
    25     private static String REGULARNI_EMAIL = "^[_a-zA-Z0-9\\.\\-]+@[_a-zA-Z0-9\\.\\-]+\\.[a-zA-Z]{2,4}$";
    26 
    27     public void odesliZpravu(Adresa komu, Adresa od, String predmet, String text) throws NekurakVyjimka {
    28 
    29 	try {
    30 	    MimeMessage mimeZprava = new MimeMessage(smtpRelace);
    31 
    32 	    mimeZprava.addRecipient(RecipientType.TO, komu.getInternetAddress());
    33 	    if (od != null) {
    34 		mimeZprava.setFrom(od.getInternetAddress());
    35 	    }
    36 	    mimeZprava.setSubject(predmet);
    37 	    mimeZprava.setText(text, "UTF-8");
    38 
    39 	    Transport.send(mimeZprava);
    40 	    log.info("Zpráva pro " + komu + " byla odeslána.");
    41 	} catch (Exception e) {
    42 	    throw new NekurakVyjimka("Selhalo odesílání e-mailu pro: " + komu, e);
    43 	}
    44     }
    45 
    46     /**
    47      * Zkontroluje e-mailovou adresu
    48      * @param email adresa typu abcd@example.com
    49      * @return true, pokud e-mail vyhovuje regulárnímu výrazu pro e-maily
    50      */
    51     public static boolean isAdresaOk(String email) {
    52 	return email != null && Pattern.matches(REGULARNI_EMAIL, email);
    53     }
    54 }