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。如果我单击该按钮,则该过程应在后台进行。
请给我一些方法。在此先感谢,对不起我的英语。