author | František Kučera <franta-hg@frantovo.cz> |
Tue Mar 23 16:11:07 2010 +0100 (2010-03-23) | |
changeset 85 | 063871cec626 |
parent 82 | df86ad0c0e55 |
child 145 | 0efefbf5f8b6 |
permissions | -rw-r--r-- |
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@85 | 42 |
throw new NekurakVyjimka("Selhalo odesílání e-mailu pro: " + komu.getInternetAddress(), e); |
franta-hg@79 | 43 |
} |
franta-hg@79 | 44 |
} |
franta-hg@79 | 45 |
|
franta-hg@79 | 46 |
/** |
franta-hg@79 | 47 |
* Zkontroluje e-mailovou adresu |
franta-hg@79 | 48 |
* @param email adresa typu abcd@example.com |
franta-hg@79 | 49 |
* @return true, pokud e-mail vyhovuje regulárnímu výrazu pro e-maily |
franta-hg@79 | 50 |
*/ |
franta-hg@81 | 51 |
public static boolean isAdresaOk(String email) { |
franta-hg@79 | 52 |
return email != null && Pattern.matches(REGULARNI_EMAIL, email); |
franta-hg@79 | 53 |
} |
franta-hg@79 | 54 |
} |