Получение данных HTML в программе Java - PullRequest
1 голос
/ 09 октября 2011

Я пытаюсь отправить электронное письмо из программы на Java, которую я нашел здесь http://stackoverflow.com/questions/73580/how-do-i-send-an-smtp-message-from-java, этот код работает нормально (с жестко закодированной информацией), но я хочу отправить информацию с созданной мной HTML-страницы, To, Subject, Text input, но я не знаю, как отправить значения этих входов со страницы HTML в эту Java-программу. Любая помощь будет оценена.Спасибо

Вот моя форма

<html>
<head>
<title>Send Email</title>

</head>
<body>
<h1 align="center">Email Sending Client</h1>
</tr></td>
<table width=30% align="center">

<form id=myform method="get" action="" onSubmit="return validate();">

<br>
<tr>
<td>
<b>From:</b>
</td>
<td>
<input type="text" name="email" id="email">
</td>
</tr>



<tr>
<td>
<b>To:</b>
</td>
<td>
<input type="text" name="to" id="to">
</td>
</tr>



<tr>
<td>
<b>Subject:</b>
</td>
<td>
<input type="text" name="sub" id="sub">
</td>
</tr>






<tr>
<td>
<b>Message:</b>
</td>
<td>
<p><textarea name="textarea" cols="16" rows="6"></textarea></p>
</td>
</tr>

<tr>
<td>
<br>
<input type=submit value="Send" align="center">
</td>
</tr>

</table>
</body>
</form>
</html>

Код для сервлета

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.net.InetAddress;
import java.util.Properties;
import java.util.Date;
import javax.mail.*;
import javax.mail.internet.*;
import com.sun.mail.smtp.*;

public class sendemail extends HttpServlet {


 public static void main(String args[]) throws Exception ,ServletException, IOException{

      HttpServletRequest request=null;
      HttpServletResponse response=null;
    // Set response content type
      response.setContentType("text/html");

      PrintWriter out = response.getWriter();
      String title = "Using GET Method to Read Form Data";


     String email= request.getParameter("email");  
     String to= request.getParameter("to");  
     String sub= request.getParameter("sub");
     String smtp= request.getParameter("smtp");
     String mess= request.getParameter("mess"); 


            Properties props = System.getProperties();
            props.put("mail.smtps.host","smtp.gmail.com");
            props.put("mail.smtps.auth","true");
            Session session = Session.getInstance(props, null);
            Message msg = new MimeMessage(session);
            msg.setFrom(new InternetAddress(email));;
            msg.setRecipients(Message.RecipientType.TO,
            InternetAddress.parse(to, false));
            msg.setSubject(sub);

            msg.setText(mess);
            //msg.setHeader("X-Mailer", "Tov Are's program");
            msg.setSentDate(new Date());
            SMTPTransport t =
                (SMTPTransport)session.getTransport("smtp");
            t.connect(smtp, "mymail@gmail.com", "mypassword");
            t.sendMessage(msg, msg.getAllRecipients());
            System.out.println("Response: " + t.getLastServerResponse());
            t.close();
  }

Ответы [ 2 ]

1 голос
/ 09 октября 2011
<html>
<head>
<title>Send Email</title>

</head>
<body>
<h1 align="center">Email Sending Client</h1>
</tr></td>
<table width=30% align="center">

<form id=myform method="get" action="sendemail" onSubmit="return validate();">

Your html form code

</form>
</html>

sendemail.java внутри пакета com.zetcode

package com.zetcode;
import java.io.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.mail.*;
import javax.mail.internet.*;
public class sendemail extends HttpServlet {

    protected void processRequest(HttpServletRequest request,
                                  HttpServletResponse response)
                   throws IOException, ServletException {

        final String err = "/error.jsp";
        final String succ = "/success.jsp";

        String from = request.getParameter("from");
        String to = request.getParameter("to");
        String subject = request.getParameter("subject");
        String message = request.getParameter("message");

        try {
            Properties props = new Properties();
            props.setProperty("mail.host", "smtp.gmail.com");
            props.setProperty("mail.smtp.port", "587");
            props.setProperty("mail.smtp.auth", "true");
            props.setProperty("mail.smtp.starttls.enable", "true");
            Authenticator auth = new SMTPAuthenticator("username","password");
            Session session = Session.getInstance(props, auth);
            MimeMessage msg = new MimeMessage(session);
            msg.setText(message);
            msg.setSubject(subject);
            msg.setFrom(new InternetAddress("name <"+from+">"));
            msg.addRecipient(Message.RecipientType.TO, new InternetAddress(to));
            Transport.send(msg);

        } catch (AuthenticationFailedException ex) {
            request.setAttribute("ErrorMessage", "Authentication failed");

            RequestDispatcher dispatcher = request.getRequestDispatcher(err);
            dispatcher.forward(request, response);

        } catch (AddressException ex) {
            request.setAttribute("ErrorMessage", "Wrong email address");

            RequestDispatcher dispatcher = request.getRequestDispatcher(err);
            dispatcher.forward(request, response);

        } catch (MessagingException ex) {
            request.setAttribute("ErrorMessage", ex.getMessage());

            RequestDispatcher dispatcher = request.getRequestDispatcher(err);
            dispatcher.forward(request, response);
        }
            RequestDispatcher dispatcher = request.getRequestDispatcher(succ);
            dispatcher.forward(request, response);

    }

    private class SMTPAuthenticator extends Authenticator {

        private PasswordAuthentication authentication;

        public SMTPAuthenticator(String login, String password) {
            authentication = new PasswordAuthentication(login, password);
        }

        @Override
        protected PasswordAuthentication getPasswordAuthentication() {
            return authentication;
        }
    }

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        processRequest(request, response);
    } 
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        processRequest(request, response);
    }
}

сделать две другие страницы error.jsp и success.jsp, чтобы перенаправить их на конкретную страницу, чтобы узнать, отправлено письмо или нет ... этот код работает для меня Я надеюсь .. теперь ты можешь сделать это ..

1 голос
/ 09 октября 2011

У вас уже есть JSP.Создайте класс сервлета и сопоставьте его с шаблоном URL вашего действия формы и реализуйте метод doPost() внутри сервлета.Вы можете получить значения, отправленные из формы, используя request.getParameter(paramName) внутри сервлета.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...