Java 当用户注册时,如何发送特定电子邮件id的自动回复?
我已经用JSP创建了一个注册表单,其中包含一个电子邮件地址的输入字段。当用户提交表单时,用户必须在其电子邮件地址上获得自动回复。我如何才能做到这一点?如何将用户的电子邮件地址添加到密件抄送字段(盲拷贝)?您的问题不是很清楚。 让我把要求弄对;只有在成功注册后,您才需要该代码向用户发送电子邮件。对吗 在servlet中(在提交操作时调用) Send email方法理想情况下会将请求发送到JMS(队列)以将电子邮件发送给所需的用户。 下面是发送电子邮件的一个片段Java 当用户注册时,如何发送特定电子邮件id的自动回复?,java,jsp,servlets,Java,Jsp,Servlets,我已经用JSP创建了一个注册表单,其中包含一个电子邮件地址的输入字段。当用户提交表单时,用户必须在其电子邮件地址上获得自动回复。我如何才能做到这一点?如何将用户的电子邮件地址添加到密件抄送字段(盲拷贝)?您的问题不是很清楚。 让我把要求弄对;只有在成功注册后,您才需要该代码向用户发送电子邮件。对吗 在servlet中(在提交操作时调用) Send email方法理想情况下会将请求发送到JMS(队列)以将电子邮件发送给所需的用户。 下面是发送电子邮件的一个片段 //Sample java code
//Sample java code to send email
public void sendEmail(){
try{
Properties props = null;
if (props == null) {
props = System.getProperties();
}
props.put("mail.smtp.host", "<server host name>");
Session session = Session.getInstance(props, null);
MimeMessage message = new MimeMessage(session);
message.setFrom(new InternetAddress("<from email id>"));
message.addRecipients(Message.RecipientType.CC, "<Registered user email id>");
message.setSubject("<Subject of the email>");
message.setContent("<Content of the email>", "text/plain");
Transport.send(message);
logger.info("Sent Email :" +
"From :" + message.getFrom() +
"To:" + message.getAllRecipients() +
"Subject:" + message.getSubject() );
} catch(Exception ex){
ex.printStackTrace();
}
}
//发送电子邮件的java代码示例
public void sendmail(){
试一试{
属性props=null;
if(props==null){
props=System.getProperties();
}
props.put(“mail.smtp.host”,”);
Session Session=Session.getInstance(props,null);
MimeMessage message=新MimeMessage(会话);
message.setFrom(新的InternetAddress(“”);
message.addRecipients(message.RecipientType.CC,“”);
message.setSubject(“”);
message.setContent(“,”文本/普通“);
传输。发送(消息);
logger.info(“已发送电子邮件:”+
发件人:“+message.getFrom()+
收件人:“+message.getAllRecipients()+
“主题:+message.getSubject());
}捕获(例外情况除外){
例如printStackTrace();
}
}
自动回复?对不起,这个词在这种特殊情况下毫无意义。自动回复更像是邮件服务器上的一种设置,它应该在收到电子邮件时自动发送回复,例如“谢谢你,你的电子邮件已收到,你的电子邮件将在24小时内得到回复”或其他什么。你不需要这个
您只需要以编程方式发送邮件。邮件应包含一个链接,该链接应激活帐户,以便用户能够登录。你可以在其他网站上看到这一点。以下是您可以进行此操作的方法:
Mailer
类,该类至少可以接受“from”、“to”、“subject”和“message”参数,并使用发送邮件。通过主机名、端口号、用户名和密码连接并登录SMTP服务器。创建邮件会话并基于给定参数发送邮件。使用运行和测试Mailer
类的main()
方法创建一个虚拟测试类。一旦你让它工作起来,继续下一步user\u activation
,其中包含PK键和FKuser\u id
,引用您应该已经拥有的user
表的PKid
。在现有的user
表中,添加一个布尔/位字段active
,默认为false
/0
用户
表中获取插入id
,生成一个长且唯一的键
,并将其插入用户激活
表中。准备一封带有激活链接的邮件,其中包含唯一的键
,作为URL参数或路径,然后使用您创建的Mailer
类发送此邮件Servlet
,例如/activate/*
,并从URL中提取激活密钥。从数据库中选择关联的用户,如果存在,则将其活动
字段设置为真
/1
,并从用户激活
表中删除密钥active=true
或1
时选择用户不,我只想以“注册成功”的形式自动回复用户。这就是用户注册完成/单击“提交”按钮时的情况。如何实现?您好。。这将是所有想要这种功能的人的最佳算法。这很好(+1),我将在我的应用程序中这样做。我只是有一个疑问,我应该在激活后删除键值,这样它就不能被重用,或者就没有必要了?当然你需要删除它。另见第5点。因为您使用的是JSF,所以您也可以用JSF视图/支持bean替换“servlet”。如果您不想删除密钥(我也尝试过避免这一点),可以创建一个带有过期日期时间戳的激活密钥。如果用户在到期日后激活,则不会提取该用户。激活成功后,将填充另一个时间戳,该时间戳指定激活密钥的激活时间。这是一个很好的方法,因为它可以告诉您有多少用户已注册但尚未激活。是否有必要/至关重要地将激活密钥存储在数据库中?存储到用户会话中还不够吗?这仅仅取决于需求吗?
//Sample java code to send email
public void sendEmail(){
try{
Properties props = null;
if (props == null) {
props = System.getProperties();
}
props.put("mail.smtp.host", "<server host name>");
Session session = Session.getInstance(props, null);
MimeMessage message = new MimeMessage(session);
message.setFrom(new InternetAddress("<from email id>"));
message.addRecipients(Message.RecipientType.CC, "<Registered user email id>");
message.setSubject("<Subject of the email>");
message.setContent("<Content of the email>", "text/plain");
Transport.send(message);
logger.info("Sent Email :" +
"From :" + message.getFrom() +
"To:" + message.getAllRecipients() +
"Subject:" + message.getSubject() );
} catch(Exception ex){
ex.printStackTrace();
}
}