franta-hg@79: package cz.frantovo.nekurak.email; franta-hg@79: franta-hg@79: import cz.frantovo.nekurak.vyjimky.NekurakVyjimka; 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@79: @Resource(lookup = "mail/nekurak.net") franta-hg@79: Session smtpRelace; franta-hg@79: private static final Logger log = Logger.getLogger(Postak.class.getSimpleName()); franta-hg@79: private static String REGULARNI_EMAIL = "^[_a-zA-Z0-9\\.\\-]+@[_a-zA-Z0-9\\.\\-]+\\.[a-zA-Z]{2,4}$"; franta-hg@79: franta-hg@79: public void odesliZpravu(Adresa komu, Adresa od, String predmet, String text) throws NekurakVyjimka { franta-hg@79: franta-hg@79: try { franta-hg@79: MimeMessage mimeZprava = new MimeMessage(smtpRelace); franta-hg@79: franta-hg@79: mimeZprava.addRecipient(RecipientType.TO, komu.getInternetAddress()); franta-hg@79: if (od != null) { franta-hg@79: mimeZprava.setFrom(od.getInternetAddress()); franta-hg@79: } franta-hg@79: mimeZprava.setSubject(predmet); franta-hg@79: mimeZprava.setText(text, "UTF-8"); franta-hg@79: franta-hg@79: Transport.send(mimeZprava); franta-hg@79: log.info("Zpráva pro " + komu + " byla odeslána."); franta-hg@79: } catch (Exception e) { franta-hg@79: throw new NekurakVyjimka("Selhalo odesílání e-mailu pro: " + komu, e); franta-hg@79: } franta-hg@79: franta-hg@79: } franta-hg@79: franta-hg@79: /** franta-hg@79: * Zkontroluje e-mailovou adresu franta-hg@79: * @param email adresa typu abcd@example.com franta-hg@79: * @return true, pokud e-mail vyhovuje regulárnímu výrazu pro e-maily franta-hg@79: */ franta-hg@79: public boolean isAdresaOk(String email) { franta-hg@79: return email != null && Pattern.matches(REGULARNI_EMAIL, email); franta-hg@79: } franta-hg@79: }