java/nekurak.net-ejb/src/java/cz/frantovo/nekurak/email/Postak.java
author František Kučera <franta-hg@frantovo.cz>
Sun Jun 20 14:46:47 2010 +0200 (2010-06-20)
changeset 145 0efefbf5f8b6
parent 85 063871cec626
permissions -rw-r--r--
Formátování kódu, důsledné používání tabulátorů, drobné úpravy, StringBuilder
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@145
     4
import java.util.logging.Level;
franta-hg@79
     5
import java.util.logging.Logger;
franta-hg@79
     6
import java.util.regex.Pattern;
franta-hg@79
     7
import javax.annotation.Resource;
franta-hg@79
     8
import javax.ejb.LocalBean;
franta-hg@79
     9
import javax.ejb.Stateless;
franta-hg@79
    10
import javax.mail.Message.RecipientType;
franta-hg@79
    11
import javax.mail.Session;
franta-hg@79
    12
import javax.mail.Transport;
franta-hg@79
    13
import javax.mail.internet.MimeMessage;
franta-hg@79
    14
franta-hg@79
    15
/**
franta-hg@79
    16
 * Nízkoúrovňová komponenta sloužící k odesílání e-mailů.
franta-hg@79
    17
 * @author fiki
franta-hg@79
    18
 */
franta-hg@79
    19
@Stateless
franta-hg@79
    20
@LocalBean
franta-hg@79
    21
public class Postak {
franta-hg@79
    22
franta-hg@145
    23
	@Resource(lookup = "mail/nekurak.net")
franta-hg@145
    24
	Session smtpRelace;
franta-hg@145
    25
	private static final Logger log = Logger.getLogger(Postak.class.getSimpleName());
franta-hg@145
    26
	private static String REGULARNI_EMAIL = "^[_a-zA-Z0-9\\.\\-]+@[_a-zA-Z0-9\\.\\-]+\\.[a-zA-Z]{2,4}$";
franta-hg@79
    27
franta-hg@145
    28
	public void odesliZpravu(Adresa komu, Adresa od, String predmet, String text) throws NekurakVyjimka {
franta-hg@79
    29
franta-hg@145
    30
		try {
franta-hg@145
    31
			MimeMessage mimeZprava = new MimeMessage(smtpRelace);
franta-hg@79
    32
franta-hg@145
    33
			mimeZprava.addRecipient(RecipientType.TO, komu.getInternetAddress());
franta-hg@145
    34
			if (od != null) {
franta-hg@145
    35
				mimeZprava.setFrom(od.getInternetAddress());
franta-hg@145
    36
			}
franta-hg@145
    37
			mimeZprava.setSubject(predmet);
franta-hg@145
    38
			mimeZprava.setText(text, "UTF-8");
franta-hg@79
    39
franta-hg@145
    40
			Transport.send(mimeZprava);
franta-hg@145
    41
			log.log(Level.INFO, "Zpráva pro {0} byla odeslána.", komu);
franta-hg@145
    42
		} catch (Exception e) {
franta-hg@145
    43
			throw new NekurakVyjimka("Selhalo odesílání e-mailu pro: " + komu.getInternetAddress(), e);
franta-hg@145
    44
		}
franta-hg@79
    45
	}
franta-hg@79
    46
franta-hg@145
    47
	/**
franta-hg@145
    48
	 * Zkontroluje e-mailovou adresu
franta-hg@145
    49
	 * @param email adresa typu abcd@example.com
franta-hg@145
    50
	 * @return true, pokud e-mail vyhovuje regulárnímu výrazu pro e-maily
franta-hg@145
    51
	 */
franta-hg@145
    52
	public static boolean isAdresaOk(String email) {
franta-hg@145
    53
		return email != null && Pattern.matches(REGULARNI_EMAIL, email);
franta-hg@145
    54
	}
franta-hg@79
    55
}