Отправить письмо в JSP
Автор:Eve Cole
Время обновления:2009-07-02 17:13:09
Отправить письмо в JSP
1. Мы можем отправлять почту через любой механизм JSP (например, JSWDK), который поддерживает пакет sun.net.smtp в спецификации sun.
(Предупреждение: используйте встроенный внутренний пакет спецификаций Sun, который повлияет на переносимость вашей программы jsp.)
Следующий скриптлет использует класс SmtpClient для отправки электронных писем в файлах jsp.
2. JavaMail — это официальный почтовый API Java. См. http://java.sun.com/products/javamail/. Хотя API богаче и сложнее, чем sun.net.smtp.SmtpClient, он переносим. Здесь воссоздан класс MailSender, который содержит API JavaMail. Как показано ниже:
// префикс ms_ предназначен для переменных класса MailSender
// префикс str предназначен для String
// префикс astr предназначен для массива строк
// префикс strbuf предназначен для StringBuffers и т.д.
общедоступный MailSender(
Строка strFrom, // отправитель
String[] astrTo, // получатель(и)
String[] astrBCC, // получатель(и) скрытой копии, необязательно
Строка strSubject, // тема
логическая отладка)
{
ms_strFrom = strFrom // от кого сообщение
ms_astrTo = astrTo; // кому (множественное число) предназначено сообщение
ms_debugging = debugging; // кому (множественное число) предназначено сообщение
// устанавливаем хост
Свойства props = новые свойства();
props.put("mail.smtp.host", ms_strSMTPHost);
// создаем некоторые свойства и получаем сеанс по умолчанию
Сеанс session = Session.getDefaultInstance(реквизит, ноль);
session.setDebug(ms_debugging);
пытаться {
//создаем сообщение
ms_msg = новый MimeMessage (сессия);
// устанавливаем исходное значение
InternetAddress from = новый InternetAddress(strFrom);
ms_msg.setFrom(от);
// устанавливаем значение
Адрес InternetAddress[] = новый InternetAddress[astrTo.length];
for (int i = 0; я astrTo.length; ++i)
{
адрес[i] = новый InternetAddress(astrTo[i]);
}
ms_msg.setRecipients(Message.RecipientType.TO, адрес);
// устанавливаем получателей скрытой копии
если (astrBCC != ноль)
{
адрес = новый InternetAddress[astrBCC.length];
for (int i = 0; я astrBCC.length; ++i)
{
eh.dbg("astrBCC[" + i + "] is: "" + astrBCC[i] + "'");
адрес[i] = новый InternetAddress(astrBCC[i]);
}
ms_msg.setRecipients(Message.RecipientType.BCC, адрес);
}
// устанавливаем тему
ms_msg.setSubject(strSubject);
// устанавливаем строковый буфер, в котором будет храниться сообщение
ms_strbufMsg = новый StringBuffer();
} catch (MessagingException mex) {
mex.printStackTrace(System.err);
} catch (исключение ex) {
ex.printStackTrace(System.err);
}
}
общественная пустота ms_add (String strText)
{
ms_strbufMsg.append(strText);
}
общественная недействительность ms_send()
{
пытаться {
// устанавливаем содержимое в виде обычного текста
ms_msg.setContent(new String(ms_strbufMsg), "text/plain");
// и прочь
Transport.send(ms_msg);
} catch (исключение ex) {
System.out.println("Обнаружено исключение в MailSender.ms_send:" + ex);
}
}