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