franta-hg@79: package cz.frantovo.nekurak.email; franta-hg@79: franta-hg@79: import cz.frantovo.nekurak.vyjimky.NekurakVyjimka; franta-hg@145: import java.util.logging.Level; franta-hg@79: import java.util.logging.Logger; franta-hg@79: import java.util.regex.Pattern; franta-hg@79: import javax.annotation.Resource; franta-hg@79: import javax.ejb.LocalBean; franta-hg@79: import javax.ejb.Stateless; franta-hg@79: import javax.mail.Message.RecipientType; franta-hg@79: import javax.mail.Session; franta-hg@79: import javax.mail.Transport; franta-hg@79: import javax.mail.internet.MimeMessage; franta-hg@79: franta-hg@79: /** franta-hg@79: * Nízkoúrovňová komponenta sloužící k odesílání e-mailů. franta-hg@79: * @author fiki franta-hg@79: */ franta-hg@79: @Stateless franta-hg@79: @LocalBean franta-hg@79: public class Postak { franta-hg@79: franta-hg@145: @Resource(lookup = "mail/nekurak.net") franta-hg@145: Session smtpRelace; franta-hg@145: private static final Logger log = Logger.getLogger(Postak.class.getSimpleName()); franta-hg@145: private static String REGULARNI_EMAIL = "^[_a-zA-Z0-9\\.\\-]+@[_a-zA-Z0-9\\.\\-]+\\.[a-zA-Z]{2,4}$"; franta-hg@79: franta-hg@145: public void odesliZpravu(Adresa komu, Adresa od, String predmet, String text) throws NekurakVyjimka { franta-hg@79: franta-hg@145: try { franta-hg@145: MimeMessage mimeZprava = new MimeMessage(smtpRelace); franta-hg@79: franta-hg@145: mimeZprava.addRecipient(RecipientType.TO, komu.getInternetAddress()); franta-hg@145: if (od != null) { franta-hg@145: mimeZprava.setFrom(od.getInternetAddress()); franta-hg@145: } franta-hg@145: mimeZprava.setSubject(predmet); franta-hg@145: mimeZprava.setText(text, "UTF-8"); franta-hg@79: franta-hg@145: Transport.send(mimeZprava); franta-hg@145: log.log(Level.INFO, "Zpráva pro {0} byla odeslána.", komu); franta-hg@145: } catch (Exception e) { franta-hg@145: throw new NekurakVyjimka("Selhalo odesílání e-mailu pro: " + komu.getInternetAddress(), e); franta-hg@145: } franta-hg@79: } franta-hg@79: franta-hg@145: /** franta-hg@145: * Zkontroluje e-mailovou adresu franta-hg@145: * @param email adresa typu abcd@example.com franta-hg@145: * @return true, pokud e-mail vyhovuje regulárnímu výrazu pro e-maily franta-hg@145: */ franta-hg@145: public static boolean isAdresaOk(String email) { franta-hg@145: return email != null && Pattern.matches(REGULARNI_EMAIL, email); franta-hg@145: } franta-hg@79: }