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