| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
JavaMail API mß implementovanΘ najbe₧nejÜie protokoly, pou₧φvanΘ pri prßci s elektronickou poÜtou a poskytuje jednoduchΘ a efektφvne nßstroje na ich pou₧φvanie. Pomocou tohto API je mo₧nΘ vytvori¥ pomerne komplikovanΘ aplikßcie na sprßvu elektronickej poÜty a prßcu s ≥ou.
╚o potrebujeme?
V prvom rade stiahnu¥ alebo inak zφska¥ a nainÜtalova¥ samotnΘ JavaMail API. AvÜak ja odpor·Φam stiahnu¥ si a nainÜtalova¥ J2EE (Java 2 Enterprise Edition), ak ho eÜte nemßte. V J2EE je JavaMail API u₧ zabudovanΘ. Druh· mo₧nos¥ odpor·Φam urobi¥ aj preto, preto₧e s·Φas¥ou J2EE je aj JAF (JavaBeans Activation Framework), Φo s· triedy nevyhnutnΘ na to, aby ste mohli pou₧φva¥ JavaMail API. Preto ak ste zvolili prv· variantu (inÜtalßcia JavaMail API), je nutnΘ si nainÜtalova¥ aj JavaBeans Activation Framework. ╧alej potrebujeme servlet kontajner, ktor² bude obsluhova¥ naÜe po₧iadavky na strßnky JSP. Ak ste eÜte neΦφtali serißl o programovanφ dynamick²ch strßnok JSP, v Φlßnku o konfigurßcii JSP nßjdete informßcie ako si nainÜtalova¥ a spusti¥ referenΦn· implementßciu servletov - Tomcat.
ZaΦφname
Ak mßme splnenΘ dve hore uvedenΘ podmienky, je Φas otestova¥ Φi mßme JavaMail API k dispozφcii. Vytvorte si nov· strßnku JSP a umiestnite do nej tieto tri riadky. Podho∩te strßnku Tomcatu a dajte si ju zobrazi¥. Ak je vÜetko v poriadku, uvidφte samozrejme len vetu JavaMail API je vßm plne k dispozφcii.
<%@ page import="javax.activation.*" %>
JavaMail API je vßm plne k dispozφcii.
JavaMail API nie je viazanΘ na jeden komunikaΦn² protokol. Je vecou programßtora, ktor² si vyberie. Sprßvy, posielanie sprßv, prijφmanie sprßv a podobne je reprezentovanΘ pomocou abstraktn²ch objektov. Teda ak porozumieme objektom pou₧φvan²m pri prßci s poÜtou, m⌠₧eme s ≥ou pracova¥ pomocou r⌠znych protokolov. Pred tvorbou aplikßcie je treba sa oboznßmi¥ s niektor²mi typmi objektov, ktorΘ nesk⌠r vyu₧ijeme.
Session
Trieda javax.mail.Session reprezentuje emailov· session. Ka₧dß aplikßcia pou₧φvaj·ca JavaMail API musφ vytvori¥ minimßlne jeden objekt tejto triedy. Samozrejme ak potrebuje, m⌠₧e vytvori¥ tak²chto objektov viac. Objekt session s·visφ s objektom triedy java.util.Properties. Pomocou tohto objektu nastavφme pre prφsluÜn· session parametre. V naÜom prφklade pou₧ijeme parameter "mail.smtp.host", ktor² Üpecifikuje konkrΘtny SMTP email server. Je mo₧nΘ zada¥ ∩alÜie, naprφklad mail.transport.protocol, mail.host, mail.user a mail.from.
props.put("mail.smtp.host", "vßÜ.smtp.host");
Teraz, ke∩ mßme objekt props vytvoren², m⌠₧eme vytvori¥ session.
mySession = Session.getInstance(props);
Message
Trieda javax.mail.Message reprezentuje vÜetko, Φo s·visφ so sprßvou (emailom). Je to abstraktnß trieda a musφ by¥ implementovanß jednou z jej podtried. KonkrΘtne pre Message je to trieda javax.mail.internet.MimeMessage. Objekt triedy MimeMessage reprezentuje MIME (Multipurpose Internet Mail Extensions) email. Objekt message je previazan² s konkrΘtnou session.
Ak mßte vytvoren² objekt message, m⌠₧ete zavola¥ mno₧stvo jeho set/get met≤d a tak vysklada¥ sprßvu. Be₧n² email by mal obsahova¥ v hlaviΦke adresßta sprßvy, predmet sprßvy, prφpadne adresy typu CC (carbon copy) a BCC (blind carbon copy). Sprßva by mala samozrejme obsahova¥ aj telo, teda nejak² textov² obsah. Trieda MimeMessage ·zko s·visφ s triedou javax.mail.internet.InternetAddress. Pomocou tejto triedy musφme skonÜtruova¥ sprßvnu emailov· adresu.
InternetAddress to = new InternetAddress("niekto@niekde.cz");
message.setFrom(from);
message.addRecipient(Message.RecipientType.TO,to);
message.setSubject("Predmet sprßvy");
message.setText("Telo sprßvy");
Transport
Trieda javax.mail.Transport sa postarß o poslanie emailovej sprßvy. Aj objekt tejto triedy s·visφ s objektom session.
transport.send(message); //poÜle mail na SMTP server
Parameter "smtp" typu String, ktor² predßvame met≤de getTransport(), deklaruje protokol vrßtenΘho objektu typu Transport. Java momentßlne podporuje pri prßci s poÜtou protokoly SMTP, POP3 a IMAP. V bud·cnosti mo₧no pribudn· ∩alÜie.
Prφklad na zßver
Ide o jednoduch² prφklad strßnky JSP, z ktorej sa poÜle mail na konkrΘtnu adresu. Je to zßrove≥ zosumarizovanie predoÜl²ch riadkov.
<html>
<head>
<%@ page import="javax.mail.*" %>
<%@ page import="javax.activation.*" %>
<%@ page import="java.util.*" %>
<%@ page import="javax.mail.internet.*" %>
</head>
<body>
<%
Properties props = new Properties();
props.put("mail.smtp.host", "smtp.host");
Session s = Session.getInstance(props);
Message message = new MimeMessage(s);
InternetAddress from = new InternetAddress("niekto@niekde.sk");
InternetAddress to = new InternetAddress("niekto@niekde.sk");
message.setFrom(from);
message.addRecipient(Message.RecipientType.TO, to);
message.setSubject("JavaMail API.");
message.setText("JavaMail work!");
Transport t = s.getTransport("smtp");
t.send(message);
%>
<p align="center">Mail bol ·speÜne poslan².</p>
<p align="center">
<a href="test_mail.jsp">Kliknite sem ak chcete posla¥ ∩alÜφ!</a></p>
</body>
</html>
Sk·ste si stiahnu¥ prφklad a obohati¥ ho o formulßr, v ktorom bude mo₧nΘ zada¥ odosielate╛a, adresßta, subject a text sprßvy. Po odoslanφ formulßra sa poÜle mail na zadan· adresu. Aby ste si mohli prφklad vysk·Üa¥, musφte ma¥ prφstup na mailov² server.
P°edchozφ Φlßnky
- JavaServer Pages û prßca s cookies
- JavaServer Pages û u₧φvate╛skΘ znaΦky a kni₧nice III
- JavaServer Pages û u₧φvate╛skΘ znaΦky a kni₧nice II
- JavaServer Pages û u₧φvate╛skΘ znaΦky a kni₧nice I
- JavaServer Pages û akΦnΘ znaΦky III
- JavaServer Pages û akΦnΘ znaΦky II
- JavaServer Pages û akΦnΘ znaΦky
- JavaServer Pages û implicitnΘ objekty a direktφvy
- JavaServer Pages û skriptovacie znaΦky
- JavaServer Pages û konfigurßcia
- JavaServer Pages pro vÜechny