Хотя использовать JSP для отправки электронных писем очень просто, для этого требуется установить JavaMail API и JavaBean Activation Framework.
Загрузите последнюю версию JavaMail здесь.
Загрузите последнюю версию JavaBeans Activation Framework (JAF) здесь.
Загрузите и разархивируйте эти файлы. В корневом каталоге вы увидите ряд jar-пакетов. Добавьте пакет mail.jar и пакет активации.jar в переменную CLASSPATH.
В этом примере показано, как отправить простое электронное письмо с вашего компьютера. Предполагается, что localhost подключен к сети и имеет возможность отправлять электронную почту. В то же время еще раз подтвердите, что пакет mail.jar и пакет активации.jar добавлены в переменную CLASSPATH.
<%@ page import="java.io.*,java.util.*,javax.mail.*"%><%@ page import="javax.mail.internet.*,javax.activation.*"%> <%@ page import="javax.servlet.http.*,javax.servlet.*" %><% String result // Электронная почта получателя String to = "[email protected]" // Отправить строку электронной почты отправителя из; = "[email protected]"; // Предположим, вы отправляете электронную почту с локального хоста. String host = "localhost" // Получаем объект свойств системы Properties = System.getProperties(); // Устанавливаем свойства почтового сервера.setProperty; ( "mail.smtp.host", хост); // Получаем объект сеанса по умолчанию. Session mailSession = Session.getDefaultInstance(properties); try{ // Создаем объект MimeMessage по умолчанию. MimeMessage message = new MimeMessage(mailSession); // Установите поле заголовка From: header message.setFrom(new InternetAddress(from)); // Установите поле заголовка To: заголовка message.addRecipient(Message.RecipientType. TO, new InternetAddress(to)); // Установить тему: поле заголовка message.setSubject("Это строка темы!" //); Теперь установите фактическое сообщение message.setText("Это фактическое сообщение"); // Отправить сообщение Transport.send(message); result = "Сообщение отправлено успешно..."; }catch (MessagingException mex) { mex.printStackTrace (); result = "Ошибка: невозможно отправить сообщение..." } %><html><head><title>Отправить электронное письмо с помощью JSP</title></head><body><center><h1>Отправить электронную почту с помощью JSP</h1></center><p align="center"><% out.println("Результат: " + результат + "n"); %></p></body></html>
Теперь посетите http://localhost:8080/SendEmail.jsp, он отправит электронное письмо на адрес [email protected] и отобразит следующие результаты:
Отправить электронное письмо с помощью JSPResult: сообщение отправлено успешно....Если вы хотите отправить электронное письмо нескольким людям, перечисленные ниже методы можно использовать для указания нескольких адресов электронной почты:
void addRecipients (тип Message.RecipientType, адреса Address[]) выдает исключение MessagingExceptionПараметры описаны следующим образом:
тип: для этого значения будет установлено значение TO, CC или BCC. CC означает копию, BCC означает черную копию, а TO используется в примере программы.
адреса: это массив адресов электронной почты. При указании адреса электронной почты необходимо использовать метод InternetAddress().
В этом примере отправляется простое электронное письмо в формате HTML. Предполагается, что ваш локальный хост подключен к сети и имеет возможность отправлять почту. В то же время еще раз подтвердите, что пакет mail.jar и пакет активации.jar добавлены в переменную CLASSPATH.
Этот пример очень похож на предыдущий, но в нем мы используем метод setContent() и передаем «text/html» в качестве второго параметра, чтобы указать, что сообщение содержит содержимое HTML.
<%@ page import="java.io.*,java.util.*,javax.mail.*"%><%@ page import="javax.mail.internet.*,javax.activation.*"%> <%@ page import="javax.servlet.http.*,javax.servlet.*" %><% String result // Адрес электронной почты получателя String to = "[email protected]" // Отправить строку электронной почты отправителя из; = "[email protected]"; // Предположим, вы отправляете электронную почту с локального хоста. String host = "localhost" // Получаем объект системных свойств Properties = System.getProperties(); // Устанавливаем свойства почтового сервера.setProperty; ( "mail.smtp.host", хост); // Получаем объект сеанса по умолчанию. Session mailSession = Session.getDefaultInstance(properties); try{ // Создаем объект MimeMessage по умолчанию. MimeMessage message = new MimeMessage(mailSession); // Установите поле заголовка From: message.setFrom(new InternetAddress(from)); // Установите поле заголовка To: заголовка message.addRecipient(Message.RecipientType. TO, new InternetAddress(to)); // Установить тему: поле заголовка message.setSubject("Это строка темы!" //); Установить HTML-сообщение message.setContent("<h1>Это настоящее сообщение</h1>","text/html" ); // Отправка сообщения Transport.send(message); result = "Сообщение отправлено успешно...." ; }catch (MessagingException mex) { mex.printStackTrace(); result = "Ошибка: невозможно отправить сообщение..." }%><html><head><title>Отправить электронное письмо в формате HTML с помощью JSP</title></head><body><center><h1>Отправить электронную почту с помощью JSP</h1></center><p align="center"><% out.println("Результат: " + результат + "n"); %></p></body></html>
Теперь вы можете попробовать использовать приведенный выше JSP-файл для отправки HTML-сообщения по электронной почте.
В этом примере показано, как отправить электронное письмо, содержащее вложение.
<%@ page import="java.io.*,java.util.*,javax.mail.*"%><%@ page import="javax.mail.internet.*,javax.activation.*"%> <%@ page import="javax.servlet.http.*,javax.servlet.*" %><% String result // Электронная почта получателя String to = "[email protected]" // Отправить строку электронной почты отправителя из; = "[email protected]"; // Предположим, вы отправляете электронную почту с локального хоста. String host = "localhost" // Получаем объект системных свойств Properties = System.getProperties(); // Устанавливаем свойства почтового сервера.setProperty; ( "mail.smtp.host", хост); // Получаем объект сеанса по умолчанию. Session mailSession = Session.getDefaultInstance(properties); try{ // Создаем объект MimeMessage по умолчанию. MimeMessage message = new MimeMessage(mailSession); // Установите поле заголовка From: message.setFrom(new InternetAddress(from)); // Установите поле заголовка To: заголовка message.addRecipient(Message.RecipientType. TO, new InternetAddress(to)); //Установим поле заголовка «Тема:» message.setSubject("Это строка темы!"); //Создаем часть сообщения BodyPart. messageBodyPart = new MimeBodyPart(); // Заполняем сообщение messageBodyPart.setText("Это тело сообщения" // Создаём мультимедийное сообщение Multipart multipart = new MimeMultipart(); // Устанавливаем часть текстового сообщения multipart.addBodyPart( messageBodyPart); // Часть вложения messageBodyPart = new MimeBodyPart(); String filename = "file.txt"; new FileDataSource(filename); messageBodyPart.setDataHandler(new DataHandler(source)); messageBodyPart.setFileName(filename); multipart.addBodyPart(messageBodyPart); // Отправляем полное сообщение message.setContent(multipart); .send (сообщение); String title = "Отправить письмо"; result = "Сообщение отправлено успешно..." }catch (MessagingException mex) { mex.printStackTrace(); result = "Ошибка: невозможно отправить сообщение..." } %><html><head><title>Отправить вложение по электронной почте с помощью JSP</title></head ><body><center><h1>Отправить электронное письмо с вложением с помощью JSP</h1></center><p align="center"><% out.println("Result: " + result + "n"); %></p></body></html>
Если почтовый сервер требует имя пользователя и пароль для аутентификации пользователя, его можно установить следующим образом:
props.setProperty("mail.user", "myuser"); props.setProperty("mail.password", "mypwd");Используйте HTML-форму для получения электронного письма и получения всей информации об электронной почте через объект запроса:
Строка to = request.getParameter("to");String from = request.getParameter("from");String subject = request.getParameter("subject");String messageText = request.getParameter("body");Получив вышеуказанную информацию, вы можете отправить электронное письмо, используя пример, упомянутый ранее.