java/nekurak.net-ejb/src/java/cz/frantovo/nekurak/email/Postak.java
author František Kučera <franta-hg@frantovo.cz>
Tue Mar 23 11:26:28 2010 +0100 (2010-03-23)
changeset 81 4dddecffde5c
parent 79 b04d98cf60dd
child 82 df86ad0c0e55
permissions -rw-r--r--
E-mail: při registraci pošleme uživateli e-mail (pokud vyplní správnou adresu).
franta-hg@79
     1
package cz.frantovo.nekurak.email;
franta-hg@79
     2
franta-hg@79
     3
import cz.frantovo.nekurak.vyjimky.NekurakVyjimka;
franta-hg@79
     4
import java.util.logging.Logger;
franta-hg@79
     5
import java.util.regex.Pattern;
franta-hg@79
     6
import javax.annotation.Resource;
franta-hg@79
     7
import javax.ejb.LocalBean;
franta-hg@79
     8
import javax.ejb.Stateless;
franta-hg@79
     9
import javax.mail.Message.RecipientType;
franta-hg@79
    10
import javax.mail.Session;
franta-hg@79
    11
import javax.mail.Transport;
franta-hg@79
    12
import javax.mail.internet.MimeMessage;
franta-hg@79
    13
franta-hg@79
    14
/**
franta-hg@79
    15
 * Nízkoúrovňová komponenta sloužící k odesílání e-mailů.
franta-hg@79
    16
 * @author fiki
franta-hg@79
    17
 */
franta-hg@79
    18
@Stateless
franta-hg@79
    19
@LocalBean
franta-hg@79
    20
public class Postak {
franta-hg@79
    21
franta-hg@79
    22
    @Resource(lookup = "mail/nekurak.net")
franta-hg@79
    23
    Session smtpRelace;
franta-hg@79
    24
    private static final Logger log = Logger.getLogger(Postak.class.getSimpleName());
franta-hg@79
    25
    private static String REGULARNI_EMAIL = "^[_a-zA-Z0-9\\.\\-]+@[_a-zA-Z0-9\\.\\-]+\\.[a-zA-Z]{2,4}$";
franta-hg@79
    26
franta-hg@79
    27
    public void odesliZpravu(Adresa komu, Adresa od, String predmet, String text) throws NekurakVyjimka {
franta-hg@79
    28
franta-hg@79
    29
	try {
franta-hg@79
    30
	    MimeMessage mimeZprava = new MimeMessage(smtpRelace);
franta-hg@79
    31
franta-hg@79
    32
	    mimeZprava.addRecipient(RecipientType.TO, komu.getInternetAddress());
franta-hg@79
    33
	    if (od != null) {
franta-hg@79
    34
		mimeZprava.setFrom(od.getInternetAddress());
franta-hg@79
    35
	    }
franta-hg@79
    36
	    mimeZprava.setSubject(predmet);
franta-hg@79
    37
	    mimeZprava.setText(text, "UTF-8");
franta-hg@79
    38
franta-hg@79
    39
	    Transport.send(mimeZprava);
franta-hg@79
    40
	    log.info("Zpráva pro " + komu + " byla odeslána.");
franta-hg@79
    41
	} catch (Exception e) {
franta-hg@79
    42
	    throw new NekurakVyjimka("Selhalo odesílání e-mailu pro: " + komu, e);
franta-hg@79
    43
	}
franta-hg@79
    44
franta-hg@79
    45
    }
franta-hg@79
    46
franta-hg@79
    47
    /**
franta-hg@79
    48
     * Zkontroluje e-mailovou adresu
franta-hg@79
    49
     * @param email adresa typu abcd@example.com
franta-hg@79
    50
     * @return true, pokud e-mail vyhovuje regulárnímu výrazu pro e-maily
franta-hg@79
    51
     */
franta-hg@81
    52
    public static boolean isAdresaOk(String email) {
franta-hg@79
    53
	return email != null && Pattern.matches(REGULARNI_EMAIL, email);
franta-hg@79
    54
    }
franta-hg@79
    55
}