Получение параметров из HTML в файл электронной почты Java

Я создаю контактную форму, которая позволяет пользователю вводить свою информацию, и электронное письмо будет отправлено на указанный адрес электронной почты. У меня возникли проблемы с получением параметров файла html и прикреплением его к компонентам электронной почты. Например, я хочу, чтобы в качестве темы электронного письма использовалось имя человека и сообщение, которое должно быть получено из сообщения контактной формы.

-Это мой Java-код

public class Main {

private static String USER_NAME = "cakesbyluckydemo";  
private static String PASSWORD = "cakedemo";
private static String RECIPIENT = "[email protected]";

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. [email protected]">
      </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>
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
0
148
2

Ответы 2

Вам нужен сервлет, который будет обрабатывать отправку формы. В сервлете вы можете получить значения формы и вызвать метод sendFromGMail.

Для отправки электронной почты из веб-приложения java вы можете использовать сервлет, чтобы вызвать форму ввода.

Давайте посмотрим на пример:
Ваша форма ввода 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>

Ваш класс 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("[email protected]", "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

Другие вопросы по теме