0
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.SQLException;

import javax.mail.MessagingException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.http.HttpHost;
import org.elasticsearch.action.index.IndexRequest;
import org.elasticsearch.action.index.IndexResponse;
import org.elasticsearch.client.RestClient;
import org.elasticsearch.client.RestHighLevelClient;

public class MailSenderServlet extends HttpServlet 
{
     protected void doPost(HttpServletRequest request, HttpServletResponse response) throws 
     ServletException, IOException 
    {
    response.setContentType("text/html");
    PrintWriter out = response.getWriter();
    
    String to = "xxxxxxxxxxxxxxxxxxxx@zohocorp.com";
    String recepientEmail = request.getParameter("email").trim();
    String recepientName = request.getParameter("user-name").trim();
    String recepientPassword = request.getParameter("psw").trim();
    
    try 
    {
        JDBCPostgreSQL.insertData(recepientEmail, recepientName, recepientPassword);
    }
    catch (Exception e1) 
    {
        System.out.println(e1.getMessage());
    }
    
    String msg = "<!DOCTYPE html>\r\n" + 
            "<html>\r\n" + 
            "<head>\r\n" + 
            "<title>Message</title>\r\n" + 
            "</head>\r\n" + 
            "<body>\r\n" + 
            "<h3>Hi Admin,</h3>\r\n" + 
            "<p>"+recepientName+" wants to create a new account. If we want to accept it plz reply to this mail subject as \"accept user "+recepientName+"\" or to deny reply as \"deny user "+recepientName+"\"</p>\r\n" + 
            "<buttton onclick="------------" >Accept</button>\r\n" + 
            "<buttton onclick="------------" >Deny</button>\r\n" + 
            "</body>\r\n" + 
            "</html>\r\n" + 
            "\r\n" + 
            "\r\n" + 
            "";
    MailSender mailSender = new MailSender();
    try 
    {
        mailSender.Mail(to, msg, "accept/deny user "+recepientName+"");
    }
    catch (MessagingException e) 
    {
        System.out.println(e.getMessage());
    }
}

}

这是 servlet 程序,它在执行期间调用类文件

    import java.util.Properties;
    
    import javax.mail.Message;
    import javax.mail.MessagingException;
    import javax.mail.PasswordAuthentication;
    import javax.mail.Session;
    import javax.mail.Transport;
    import javax.mail.internet.InternetAddress;
    import javax.mail.internet.MimeMessage;
    
    public class MailSender
    {
        public void Mail(String to, String msg, String subject) throws MessagingException
        {
            final String username = "xxxxxxxxxxxxxxxxxxxxx@gmail.com";
            final String password = "xxxxxxxx";
            
            Properties properties = new Properties();
            properties.put("mail.smtp.host", "smtp.gmail.com");
            properties.put("mail.smtp.port", "465");
            properties.put("mail.smtp.auth", "true");
            properties.put("mail.smtp.starttls.enable", "true");
            properties.put("mail.smtp.socketFactory.port", "465");
            properties.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
            
            Session session = Session.getInstance(properties, new javax.mail.Authenticator() 
            {
                 protected PasswordAuthentication getPasswordAuthentication() 
                 {
                     return new PasswordAuthentication(username, password);
                 }
            });
            
            Message message = new MimeMessage(session);
            message.setFrom(new InternetAddress(username));
            message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to));
            message.setSubject(subject);
            message.setContent(msg, "text/html; charset=utf-8");
            
            Transport.send(message);
            
        }
    }

现在我需要创建一个登录页面,该页面使用 JDBCRealm 使用 tomcat 身份验证进行身份验证,具有两个角色“admin”和“user”。如果有人想创建一个新的用户帐户,则会向管理员的邮件发送一封邮件以接受用户或拒绝他,因此我通过将其内容设置为“text/html”在邮件消息中添加了两个按钮接受和拒绝java邮件API。

当管理员单击接受按钮时,用户凭据和密码将存储到数据库中,如果他单击拒绝按钮,则不会存储用户凭据。

在这里,我的问题是没有重定向到另一个页面,我需要执行此接受或拒绝操作。我可以使用锚标记,但我需要这样做而不重定向我需要提示服务器单击接受按钮。有什么方法可以这样做...没有必要响应他单击接受按钮的服务器,但是有没有任何方法可以在不重定向任何页面的情况下调用 servlet。如果我单击该按钮,则该过程应在后台进行。

请给我一些方法。在此先感谢,对不起我的英语。

4

0 回答 0