Wysyłanie maili w JSP przy użyciu JavaMail
Java, Programowanie Komentarze (0) »Ostatnio na laborki na uczelni miałem przygotować krótki referat o wysyłaniu maili w JSP przy użyciu JavaMail. Umieszczę go tutaj dla potomności. Może się komuś przyda.
Pakiet JavaMail jest standardowym składnikiem platformy Java EE, ale jeśli korzystamy z Javy SE, musimy go sobie doinstalować. Możemy go pobrać ze strony Suna. O samej instalacji nie będę się rozpisywał, bo jest dobrze opisana w pliku readme. Gdy już doinstalujemy JavaMail, możemy się zabrać za pisanie skryptu.
Jako przykład aplikacji wysyłającej mail stworzymy prosty formularz rejestracyjny. Użytkownik będzie musiał podać swój login i adres e-mail, a program odeśle mu, na podany adres, losowo wygenerowane hasło. Formularz rejestracji może wyglądać tak jak na screenie poniżej:

Po kliknięciu guzika “Zapisz” dane przekazywane są do skryptu rejestracja.jsp, w którym dzieje się cała magia. Teraz krok po kroku opiszę co się w tym skrypcie dzieje.
Na początku importujemy pakiety javax.mail.* i javax.mail.internet.*. to dzięki nim uzyskamy dostęp do możliwości oferowanych przez JavaMail. Pakiet java.util.* przyda nam się do wygenerowania losowego hasła oraz aby uzyskać dostęp do klasy Properties (ale o tym za chwilę).
<%@page import="javax.mail.*" %> <%@page import="javax.mail.internet.*" %> <%@page import="java.util.*" %>
Teraz musimy utworzyć sesję. Potrzebny nam będzie do tego obiekt klasy Properties, służący do przekazania odpowiednich wartości do sesji.
Properties props = new Properties();
props.put("mail.smtp.host", "localhost");
Session mailSession = Session.getInstance(props);
Następnie przygotowujemy wiadomość do wysyłki. Musimy ustawić nadawcę, odbiorcę, temat, treść i datę. Możemy również dodać dowolne nagłówki przy pomocy metody setHeader().
Message msg = new MimeMessage(mailSession);
msg.setFrom(new InternetAddress(addressFrom)); //nadawca
msg.addRecipient(Message.RecipientType.TO,
new InternetAddress(addressTo)); //odbiorca
msg.setSubject(mailSubject); //temat
msg.setText(mailBody); //treść
msg.setSentDate(new Date()); //data wysyłki
msg.setHeader("X-Mailer", "JavaMail API"); //dodatkowe nagłówki
Gdy mamy już gotową wiadomość, możemy ją wysłać:
Transport.send(msg);
out.println("Wiadomość wysłana na adres " + addressTo);
Formularz i kod skryptu rejestracja.jsp można pobrać tutaj: JavaMail.zip.
Ostatnie komentarze