Как отправить электронное письмо от jsp / servlet?

Как отправить электронное письмо от JSP / сервлета? Нужно ли загружать некоторые баночки или отправлять электронную почту с помощью JSP / сервлетов без каких-либо банок?

5 Solutions collect form web for “Как отправить электронное письмо от jsp / servlet?”

Логика почтовой программы должна идти в своем собственном автономном classе, который можно использовать везде. Файл JSP должен содержать только логику представления и разметку. Класс Servlet должен просто обработать запрос соответствующим образом и вызвать class почтовой программы. Вот шаги, которые вам нужно предпринять:

  1. Сначала решите, какой SMTP-сервер вы хотите использовать, чтобы вы могли отправлять электронные письма. Один из ваших интернет-провайдеров? Один из Gmail? Yahoo? Хостинг-провайдер? Самостоятельный? Независимо от этого, укажите имя хоста, порт, имя пользователя и пароль этого SMTP-сервера. Вам понадобится эта информация.


  2. Создайте простой Java-class ванили, который использует JavaMail API для отправки почтового сообщения. API JavaMail поставляется с отличным учебным пособием и часто задаваемыми вопросами . Назовите class Mailer и дайте ему метод send() (или что хотите). Протестируйте его с помощью некоторого classа тестера с помощью метода main() :

     public class TestMail { public static void main(String... args) throws Exception { // Create mailer. String hostname = "smtp.example.com"; int port = 2525; String username = "nobody"; String password = "idonttellyou"; Mailer mailer = new Mailer(hostname, port, username, password); // Send mail. String from = "john.doe@example.com"; String to = "jane.doe@example.com"; String subject = "Interesting news"; String message = "I've got JavaMail to work!"; mailer.send(from, to, subject, message); } } 

    Вы можете сделать это как простой или продвинутый, как вы хотите. Это не имеет значения, если у вас есть class, с которым вы можете отправить такую ​​почту.


  3. Теперь часть JSP, не совсем понятно, почему вы упомянули JSP, но поскольку JSP должен представлять только HTML, я уверен, вы хотели бы иметь что-то вроде формы контакта в JSP. Вот пример запуска:

     

    Your email address:

    Mail subject:

    Mail message:

    ${message}

    Да, простой простой, просто разметка / стиль, как бы вы ни хотели.


  4. Теперь создайте class Servlet, который прослушивает url-pattern /contact (так же, как форма отправляется), и реализует метод doPost() (тот же метод, что и форма):

     public class ContactServlet extends HttpServlet { private Mailer mailer; private String to; public void init() { // Create mailer. You could eventually obtain the settings as // web.xml init parameters or from some properties file. String hostname = "smtp.example.com"; int port = 2525; String username = "nobody"; String password = "forgetit"; this.mailer = new Mailer(hostname, port, username, password); this.to = "you@example.com"; } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String email = request.getParameter("email"); String subject = request.getParameter("subject"); String message = request.getParameter("message"); // Do some validations and then send mail: try { mailer.send(email, to, subject, message); request.setAttribute("message", "Mail succesfully sent!"); request.getRequestDispatcher("/WEB-INF/contact.jsp").forward(request, response); } catch (MailException e) { throw new ServletException("Mailer failed", e); } } } 

    Вот и все. Держите его простым и чистым. У каждой вещи есть свои четкие обязанности.

Вы можете отправлять почту из jsp или сервлета по мере отправки из файла classа с помощью java mail api. Вот ссылка, которая поможет вам в этом:

http://www.java-samples.com/showtutorial.php?tutorialid=675

Я использую пакет javamail, и он работает очень хорошо. Образцы, показанные выше, хороши, но, как я вижу, они не определяли параметры во внешнем файле (например, web.xml), который рекомендуется …

Представьте, что вы хотите изменить свой адрес электронной почты или SMTP-хост. Намного проще редактировать файл web.xml, чем 10 сервлетов, в которых вы использовали функцию почты. Например, добавьте следующие строки в web.xml

  smtp_server smtp.blabla.com 

Затем вы можете получить доступ к этим параметрам из сервлета с помощью

 // 1 - init Properties props = new Properties(); //props.put("mail.transport.protocol", "smtp"); props.put("mail.smtp.host", smtp_server); props.put("mail.smtp.port", smtp_port); 

Страница JSP:

 
To Email-id :

Вот код сервлета:

 String uri=req.getRequestURI(); if(uri.equals("/mail.do")) { SendEmail sa=new SendEmail(); String to_mail=request.getParameter("email"); String body="
Hi this is Test mail
"; sa.SendingEmail(to_email,body); }

И class SendEmail:

  package Email; import java.util.Properties; import javax.mail.Message; import javax.mail.MessagingException; import javax.mail.Session; import javax.mail.Transport; import javax.mail.internet.AddressException; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeMessage; public class SendEmail { public void SendingEmail(String Email,String Body) throws AddressException, MessagingException { String host ="smtp.gmail.com"; String from ="yourMailId"; //Your mail id String pass ="yourPassword"; // Your Password Properties props = System.getProperties(); props.put("mail.smtp.starttls.enable", "true"); // added this line props.put("mail.smtp.host", host); props.put("mail.smtp.user", from); props.put("mail.smtp.password", pass); props.put("mail.smtp.port", "25"); props.put("mail.smtp.auth", "true"); String[] to = {Email}; // To Email address Session session = Session.getDefaultInstance(props, null); MimeMessage message = new MimeMessage(session); message.setFrom(new InternetAddress(from)); InternetAddress[] toAddress = new InternetAddress[to.length]; // To get the array of addresses for( int i=0; i < to.length; i++ ) { // changed from a while loop toAddress[i] = new InternetAddress(to[i]); } System.out.println(Message.RecipientType.TO); for( int j=0; j < toAddress.length; j++) { // changed from a while loop message.addRecipient(Message.RecipientType.TO, toAddress[j]); } message.setSubject("Email from SciArchives"); message.setContent(Body,"text/html"); Transport transport = session.getTransport("smtp"); transport.connect(host, from, pass); transport.sendMessage(message, message.getAllRecipients()); transport.close(); } } 

Эта базовая настройка работала нормально:

Импортируйте mail.jar и activ.jar в папку WEB_INF / lib внутри проекта.

Получите mail.jar с JavaMail (последняя версия с официального сайта) .

получить activ.jar с http://www.oracle.com/technetwork/java/javase/jaf-136260.html

1. Первый jsp: emailForm.jsp

Это форма, используемая для передачи данных отправителя, получателя, предмета и сообщения в emailUtility

  < %@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> < !DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">    Send email   

Send email using SMTP

Sender address
Recipient address
Subject
Message Text

2. Второй jsp: emailUtility.jsp

Это действие формы, упомянутое в предыдущем jsp (emailForm.jsp).

   email utility   < %@ page import="java.util.*" %> < %@ page import="javax.mail.*" %> < %@ page import="javax.mail.internet.*" %> < %@ page import="javax.activation.*" %> < % String host = "smtp.gmail.com"; String to = request.getParameter("to"); String from = request.getParameter("from"); String subject = request.getParameter("subject"); String messageText = request.getParameter("messageText"); boolean sessionDebug = false; // Create some properties and get the default Session. Properties props = System.getProperties(); props.put("mail.host", host); props.put("mail.transport.protocol", "smtp"); props.setProperty("mail.transport.protocol", "smtp"); props.setProperty("mail.host", "smtp.gmail.com"); props.put("mail.smtp.auth", "true"); props.put("mail.smtp.port", "465"); props.put("mail.debug", "true"); props.put("mail.smtp.socketFactory.port", "465"); props.put("mail.smtp.socketFactory.class","javax.net.ssl.SSLSocketFactory"); props.put("mail.smtp.socketFactory.fallback", "false"); Session mailSession = Session.getDefaultInstance(props, new javax.mail.Authenticator(){ protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication( "youremail@gmail.com", "password_here");// Specify the Username and the PassWord } }); // Set debug on the Session // Passing false will not echo debug info, and passing True will. mailSession.setDebug(sessionDebug); // Instantiate a new MimeMessage and fill it with the // required information. Message msg = new MimeMessage(mailSession); msg.setFrom(new InternetAddress(from)); InternetAddress[] address = {new InternetAddress(to)}; msg.setRecipients(Message.RecipientType.TO, address); msg.setSubject(subject); msg.setSentDate(new Date()); msg.setText(messageText); // Hand the message to the default transport service // for delivery. Transport.send(msg); out.println("Mail was sent to " + to); out.println(" from " + from); out.println(" using host " + host + "."); %>    

3. Перейдите по следующему URL-адресу

HTTP: // локальный: 8080 / имя_проект / emailForm.jsp

4. Перезагрузите сервер, если он дает ошибку сервера.

  • Как работают servlets? Создание, сеансы, общие переменные и multithreading
  • Регистрация активности пользователя в веб-приложении
  • Что такое WEB-INF, используемый в веб-приложении Java EE?
  • Как указать страницу ошибки по умолчанию в web.xml?
  • Получение запроса полезной нагрузки из запроса POST в Java-сервлете
  • Как передавать данные из JSP в сервлет при отправке HTML-формы
  • Как проверить загруженный файл, будь то изображение или другой файл?
  • Получить управляемый bean-элемент JSF по имени в любом classе, связанном с Servlet
  • Что рекомендуется для нереста streamов из сервлета в Tomcat
  • Можно ли исключить некоторые конкретные URL-адреса из внутри ?
  • Заполнение выпадающего списка HTML в JSP со значениями, полученными из базы данных в Servlet
  • Interesting Posts

    как сохранить и прочитать массив массива в NSUserdefaults в swift?

    Вращение JTextField по вертикали

    Как работают треугольники CSS?

    jquery ui Диалог: не может вызывать методы в диалоге перед инициализацией

    Максимальный размер кэша приложений для iPad / iPhone

    как преобразовать строку в дату в mysql?

    Получение «неожиданно закрытого сетевого подключения к серверу»

    «Ошибка такого файла или каталога» в bash, но файл существует?

    Команда для поиска файлов для определенного временного диапазона

    Как я могу эффективно выбрать контейнер стандартной библиотеки в C ++ 11?

    Запись Mjpeg с информацией о времени сохранения FFMPEG

    Графическое приложение реального времени для данных SQL

    Почему Wireless NIC теряет свой лизинг на маршрутизатор?

    Будет ли больше RAM или больше CPU лучше для NAS (сетевой диск)?

    Можно ли использовать микрофон для гарнитуры Bluetooth, имея звук высокого качества

    Давайте будем гением компьютера.