【问题标题】:retrieving parameters from html to a java email file将参数从 html 检索到 java 电子邮件文件
【发布时间】:2018-09-01 02:32:33
【问题描述】:

我正在创建一个联系表格,允许用户输入他们的信息,然后一封电子邮件将发送到指定的电子邮件。我一直无法找出检索 html 文件的参数并将其附加到电子邮件组件。例如,我希望电子邮件的主题是人名,而消息来自联系表单消息。

-这是我的java代码

public class Main {

private static String USER_NAME = "cakesbyluckydemo";  
private static String PASSWORD = "cakedemo";
private static String RECIPIENT = "cakesbyluckydemo@gmail.com";

public static void main(String[] args) {
    String from = USER_NAME;
    String pass = PASSWORD;
    String[] to = { RECIPIENT }; 
    String subject = "Java send mail example";
    String body = "Welcome to JavaMail!";

    sendFromGMail(from, pass, to, subject, body);
}

private static void sendFromGMail(String from, String pass, String[] to, String subject, String body) {
    Properties props = System.getProperties();
    String host = "smtp.gmail.com";
    props.put("mail.smtp.starttls.enable", "true");
    props.put("mail.smtp.host", host);
    props.put("mail.smtp.user", from);
    props.put("mail.smtp.password", pass);
    props.put("mail.smtp.port", "587");
    props.put("mail.smtp.auth", "true");

    Session session = Session.getDefaultInstance(props);
    MimeMessage message = new MimeMessage(session);

    try {
        message.setFrom(new InternetAddress(from));
        InternetAddress[] toAddress = new InternetAddress[to.length];


        for( int i = 0; i < to.length; i++ ) {
            toAddress[i] = new InternetAddress(to[i]);
        }

        for( int i = 0; i < toAddress.length; i++) {
            message.addRecipient(Message.RecipientType.TO, toAddress[i]);
        }

        message.setSubject(subject);
        message.setText(body);
        Transport transport = session.getTransport("smtp");
        transport.connect(host, from, pass);
        transport.sendMessage(message, message.getAllRecipients());
        transport.close();
    }
    catch (AddressException ae) {
        ae.printStackTrace();
    }
    catch (MessagingException me) {
        me.printStackTrace();
    }
}

}

-这是我的一些html代码

 <form>
    <div class="field">
      <label class="label">Name</label>
      <div class="control">
        <input class="input" type="text" placeholder="e.g Alex Smith">
      </div>
    </div>        
    <div class="field">
      <label class="label">Email</label>
      <div class="control">
        <input class="input" type="email" placeholder="e.g. alexsmith@gmail.com">
      </div>
    </div>

    <div class="field">
      <label class="label">Message</label>
      <div class="control">
        <textarea class="textarea" placeholder="Textarea"></textarea>
      </div>
    </div>
    <div class="field is-grouped">
      <div class="control">
        <button class="button is-link">Submit</button>
      </div>
    </div>
  </form>

【问题讨论】:

    标签: java html email parameters


    【解决方案1】:

    您需要一个处理表单提交的 servlet。 在 servlet 中,您可以检索表单值并调用您的 sendFromGMail 方法。

    【讨论】:

      【解决方案2】:

      对于从 java web 应用程序发送电子邮件,您可以使用 Servlet 以便调用提交您的输入表单。

      让我们看一个例子:
      您的 html 输入表单如下:

      <!DOCTYPE html>
      <html lang="en">
      <head>
        <title>Email Example</title>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
        <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
      </head>
      <body>
      
      <div class="container">
      <form action="servlet/SendEmail" method="post">
          <div class="col-sm-4"></div>
          <div class="container col-sm-6">
          <div class="form-group">
            <label for="name">Name: </label>
            <input type="text" class="form-control" id="name" placeholder="Enter name" name="name">
          </div>
          <div class="form-group">
            <label for="email">Email:</label>
            <input type="email" class="form-control" id="email" placeholder="Enter email" name="email">
          </div>
          <div class="form-group">
              <label for="message">Message Body:</label>
              <label><textarea class="form-control" rows="5" cols="100" placeholder="Enter your message" name="message"></textarea></label>
          </div>
          <button type="submit" class="btn btn-default">Submit</button>
          </div>
        </form>
      </div>
      
      </body>
      </html>
      

      您将扩展 servlet 类的 java 类如下:

      import java.io.*;  
      import javax.servlet.ServletException;  
      import javax.servlet.http.*; 
      import java.util.Properties;    
      import javax.mail.*;    
      import javax.mail.internet.*; 
        
      public class SendEmail extends HttpServlet {  
      @Override
      public void doPost(HttpServletRequest request, HttpServletResponse response)  
                  throws ServletException, IOException {  
        
      response.setContentType("text/html");  
      PrintWriter out = response.getWriter();  
                
      String name=request.getParameter("name");  
      String toEmails=request.getParameter("email");  
      String message=request.getParameter("message");  
      
      String subject = "Test email";
      
      try{  
          System.out.println("Data: \n "+"Name: "+name+" email: "+toEmails+" message: "+message); 
          sendFromGMail("youremail@gmail.com", "yourPassword", toEmails, subject, message);
          out.print("Message sent successfully");    
      }catch (Exception e2) {
          System.out.println(e2);
          out.print("Message cannot send! Check setting"); 
      }  
                
      out.close();  
      }
      
      public void sendFromGMail(final String from,final String password,String to,String sub,String msg){  
                //Get properties object    
                Properties props = new Properties();    
                props.put("mail.smtp.host", "smtp.gmail.com");    
                props.put("mail.smtp.socketFactory.port", "465");    
                props.put("mail.smtp.socketFactory.class",    
                          "javax.net.ssl.SSLSocketFactory");    
                props.put("mail.smtp.auth", "true");    
                props.put("mail.smtp.port", "465");    
                //get Session   
                Session session = Session.getDefaultInstance(props,    
                 new javax.mail.Authenticator() {    
                 @Override
                 protected PasswordAuthentication getPasswordAuthentication() {    
                 return new PasswordAuthentication(from,password);  
                 }    
                });    
                //compose message    
                try {    
                 MimeMessage message = new MimeMessage(session);    
                 message.addRecipient(Message.RecipientType.TO,new InternetAddress(to));    
                 message.setSubject(sub);    
                 message.setText(msg);    
                 //send message  
                 Transport.send(message);    
                 System.out.println("message sent successfully");    
                } catch (MessagingException e) {throw new RuntimeException(e);}    
                   
          }  
        
      }  
      

      你的 web.xml 文件将是:

      <?xml version="1.0" encoding="UTF-8"?>
      <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee   http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
          <servlet>
              <servlet-name>SendEmail</servlet-name>
              <servlet-class>com.notearena.emailwebapp.SendEmail</servlet-class>
          </servlet>
          <servlet-mapping>
              <servlet-name>SendEmail</servlet-name>
              <url-pattern>/servlet/SendEmail</url-pattern>
          </servlet-mapping>
          <welcome-file-list>
              <welcome-file>index.html</welcome-file>
          </welcome-file-list>
      </web-app>
      

      你可以在这里找到一个完整的例子: https://github.com/Md-MamunAbdulKayum/Email-java-web-app-/tree/master

      【讨论】:

        猜你喜欢
        • 2013-07-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-05-19
        相关资源
        最近更新 更多