java/nekurak.net-ejb/src/java/cz/frantovo/nekurak/email/Postak.java
changeset 79 b04d98cf60dd
child 81 4dddecffde5c
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/java/nekurak.net-ejb/src/java/cz/frantovo/nekurak/email/Postak.java	Tue Mar 23 10:33:36 2010 +0100
     1.3 @@ -0,0 +1,55 @@
     1.4 +package cz.frantovo.nekurak.email;
     1.5 +
     1.6 +import cz.frantovo.nekurak.vyjimky.NekurakVyjimka;
     1.7 +import java.util.logging.Logger;
     1.8 +import java.util.regex.Pattern;
     1.9 +import javax.annotation.Resource;
    1.10 +import javax.ejb.LocalBean;
    1.11 +import javax.ejb.Stateless;
    1.12 +import javax.mail.Message.RecipientType;
    1.13 +import javax.mail.Session;
    1.14 +import javax.mail.Transport;
    1.15 +import javax.mail.internet.MimeMessage;
    1.16 +
    1.17 +/**
    1.18 + * Nízkoúrovňová komponenta sloužící k odesílání e-mailů.
    1.19 + * @author fiki
    1.20 + */
    1.21 +@Stateless
    1.22 +@LocalBean
    1.23 +public class Postak {
    1.24 +
    1.25 +    @Resource(lookup = "mail/nekurak.net")
    1.26 +    Session smtpRelace;
    1.27 +    private static final Logger log = Logger.getLogger(Postak.class.getSimpleName());
    1.28 +    private static String REGULARNI_EMAIL = "^[_a-zA-Z0-9\\.\\-]+@[_a-zA-Z0-9\\.\\-]+\\.[a-zA-Z]{2,4}$";
    1.29 +
    1.30 +    public void odesliZpravu(Adresa komu, Adresa od, String predmet, String text) throws NekurakVyjimka {
    1.31 +
    1.32 +	try {
    1.33 +	    MimeMessage mimeZprava = new MimeMessage(smtpRelace);
    1.34 +
    1.35 +	    mimeZprava.addRecipient(RecipientType.TO, komu.getInternetAddress());
    1.36 +	    if (od != null) {
    1.37 +		mimeZprava.setFrom(od.getInternetAddress());
    1.38 +	    }
    1.39 +	    mimeZprava.setSubject(predmet);
    1.40 +	    mimeZprava.setText(text, "UTF-8");
    1.41 +
    1.42 +	    Transport.send(mimeZprava);
    1.43 +	    log.info("Zpráva pro " + komu + " byla odeslána.");
    1.44 +	} catch (Exception e) {
    1.45 +	    throw new NekurakVyjimka("Selhalo odesílání e-mailu pro: " + komu, e);
    1.46 +	}
    1.47 +
    1.48 +    }
    1.49 +
    1.50 +    /**
    1.51 +     * Zkontroluje e-mailovou adresu
    1.52 +     * @param email adresa typu abcd@example.com
    1.53 +     * @return true, pokud e-mail vyhovuje regulárnímu výrazu pro e-maily
    1.54 +     */
    1.55 +    public boolean isAdresaOk(String email) {
    1.56 +	return email != null && Pattern.matches(REGULARNI_EMAIL, email);
    1.57 +    }
    1.58 +}