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 |
}
|