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 +}