1 package cz.frantovo.nekurak.email;
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;
16 * Nízkoúrovňová komponenta sloužící k odesílání e-mailů.
23 @Resource(lookup = "mail/nekurak.net")
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}$";
28 public void odesliZpravu(Adresa komu, Adresa od, String predmet, String text) throws NekurakVyjimka {
31 MimeMessage mimeZprava = new MimeMessage(smtpRelace);
33 mimeZprava.addRecipient(RecipientType.TO, komu.getInternetAddress());
35 mimeZprava.setFrom(od.getInternetAddress());
37 mimeZprava.setSubject(predmet);
38 mimeZprava.setText(text, "UTF-8");
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);
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
52 public static boolean isAdresaOk(String email) {
53 return email != null && Pattern.matches(REGULARNI_EMAIL, email);