我正在处理注册的电子邮件确认。
首先,我从doPost()
创建随机值并将其作为激活链接发送到最终电子邮件:
int token = new Random().nextInt(999999-100000) + 100000;
sendMail mailAgent = new sendMail("Hello!", "Hello, Link: "+ request.getRequestURL().toString()+"?Sender="+nick+"&Token="+token);
mailAgent.to = "target@mail.com";
mailAgent.send();
...消息发送正常,但我必须得到这个值。
唯一的想法 - 如何开始在mailAgent.send()
方法之后收听GET请求。它意味着冻结脚本在那里的执行。
我会做这样的事情:
mailAgent.send();
doGet(request,response);
// Will fire right after call, but i want to listen requests from here
有什么建议吗?
答案 0 :(得分:4)
如果我理解正确,您希望在用户点击链接后注册该用户,该链接包含随机令牌,并通过电子邮件发送。用户可能会在发送邮件很长一段时间后点击此链接。您的服务器可能已重新启动,可能发生了很多事情。
因此,将随机令牌与用户ID一起存储在数据库中,然后通过邮件发送给用户。
当用户阅读邮件时,点击链接然后发送回令牌,检查他发送的令牌是否与存储在数据库中的令牌相同。如果是,则将用户标记为已注册。