English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Хотя отправка электронной почты с помощью JSP очень проста, вам нужно JavaMail API и необходимо установить JavaBean Activation Framework.
Вы можете загрузить последнюю версию с Java-сайта JavaMail, откройте веб-страницу справа есть Загрузки ссылка, нажмите на нее, чтобы загрузить.
Вы можете загрузить последнюю версию с Java-сайта JAF (версия 1.1.1).
Загрузите и распакуйте эти файлы, в корневой директории вы увидите серию jar-пакетов. Добавьте jar-пакеты mail.jar и activation.jar в переменную CLASSPATH.
Этот пример показывает, как отправить простое письмо с вашего компьютера. Он предполагает, что localhost уже подключен к сети и имеет возможность отправлять письмо. В то же время, пожалуйста, еще раз подтвердите, что jar-пакеты mail.jar и activation.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]"; // 发件人的电子邮件 String from = "[email protected]"; // 假设你是从本地主机发送电子邮件 String host = "localhost"; // 获取系统属性对象 Properties properties = System.getProperties(); // 设置邮件服务器 properties.setProperty("mail.smtp.host", host); // 获取默认的Session对象。 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)); // Настройка поля заголовка Subject: message.setSubject("Это строка темы!"); // Теперь установлено фактическое сообщение message.setText("Это фактическое сообщение"); // Отправка сообщения Transport.send(message); result = "Сообщение отправлено успешно...."; }catch (MessagingException mex) { mex.printStackTrace(); result = "Ошибка: не удалось отправить сообщение...."; } %> <html> <head> <title>Отправка электронной почты с помощью JSP</title> </head> <body> <center> <h1>Send Email using JSP</h1> </center> <p align="center"> <% out.println("Result: " + result + "\n"); %> </p> </body> </html>
Теперь перейдите по адресу http://localhost:8080/SendEmail.jsp, он отправит письмо [email protected] и покажет следующий результат:
Отправка электронной почты с помощью JSP Result: успешно отправлено письмо....
Если вы хотите отправить письмо нескольким людям, перечисленные ниже методы могут быть использованы для указания нескольких адресов электронной почты:
void addRecipients(Message.RecipientType type, Address[] addresses) throws MessagingException
Описание параметров следующим образом:
type: это значение будет установлено в TO (адресат), CC или BCC. CC означает Carbon Copy (копия), BCC означает Blind Carbon Copy (скрытая копия). В примере программы используется TO.
addresses: это массив адресов электронной почты, при указании адреса электронной почты необходимо использовать метод InternetAddress().
Этот пример отправляет простое HTML письмо. Он предполагает, что ваш localhost уже подключен к сети и имеет возможность отправлять письма. В то же время, пожалуйста, еще раз подтвердите, что jar-пакеты mail.jar и activation.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]"; // 发件人的电子邮件 String from = "[email protected]"; // 假设你是从本地主机发送电子邮件 String host = "localhost"; // 获取系统属性对象 Properties properties = System.getProperties(); // 设置邮件服务器 properties.setProperty("mail.smtp.host", host); // 获取默认的Session对象。 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)); // Настройка поля заголовка Subject: message.setSubject("Это строка темы!"); // 设置 HTML消息 message.setContent("<h1>This is actual message</h1>", "text/html"); // Отправка сообщения Transport.send(message); result = "Сообщение отправлено успешно...."; }catch (MessagingException mex) { mex.printStackTrace(); result = "Ошибка: не удалось отправить сообщение...."; } %> <html> <head> <title>Send HTML Email using JSP</title> </head> <body> <center> <h1>Send Email using JSP</h1> </center> <p align="center"> <% out.println("Result: " + result + "\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]"; // 发件人的电子邮件 String from = "[email protected]"; // 假设你是从本地主机发送电子邮件 String host = "localhost"; // 获取系统属性对象 Properties properties = System.getProperties(); // 设置邮件服务器 properties.setProperty("mail.smtp.host", host); // 获取默认的Session对象。 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)); // Настройка поля заголовка Subject: message.setSubject("Это строка темы!"); // Создание части сообщения BodyPart messageBodyPart = new MimeBodyPart(); // Заполнение сообщения messageBodyPart.setText("Это тело сообщения"); // Создание мультимедийного сообщения Multipart multipart = new MimeMultipart(); // Настройка части текстового сообщения multipart.addBodyPart(messageBodyPart); // Часть вложения messageBodyPart = new MimeBodyPart(); String filename = "file.txt"; DataSource source = new FileDataSource(filename); messageBodyPart.setDataHandler(new DataHandler(source)); messageBodyPart.setFileName(filename); multipart.addBodyPart(messageBodyPart); // Отправка целого сообщения message.setContent(multipart); // Отправка сообщения Transport.send(message); 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>
Если сервер почты требует имя пользователя и пароль для аутентификации, можно настроить так:
properties.setProperty("mail.user", "myuser"); properties.setProperty("mail.password", "mypwd");
Получите все данные письма через объект запроса request.
String to = request.getParameter("to"); String from = request.getParameter("from"); String subject = request.getParameter("subject"); String messageText = request.getParameter("body");
После получения этой информации вы можете использовать примеры, упомянутые ранее, чтобы отправить письмо.