Java 当用户注册时,如何发送特定电子邮件id的自动回复?

Java 当用户注册时,如何发送特定电子邮件id的自动回复?,java,jsp,servlets,Java,Jsp,Servlets,我已经用JSP创建了一个注册表单,其中包含一个电子邮件地址的输入字段。当用户提交表单时,用户必须在其电子邮件地址上获得自动回复。我如何才能做到这一点?如何将用户的电子邮件地址添加到密件抄送字段(盲拷贝)?您的问题不是很清楚。 让我把要求弄对;只有在成功注册后,您才需要该代码向用户发送电子邮件。对吗 在servlet中(在提交操作时调用) Send email方法理想情况下会将请求发送到JMS(队列)以将电子邮件发送给所需的用户。 下面是发送电子邮件的一个片段 //Sample java code

我已经用JSP创建了一个注册表单,其中包含一个电子邮件地址的输入字段。当用户提交表单时,用户必须在其电子邮件地址上获得自动回复。我如何才能做到这一点?

如何将用户的电子邮件地址添加到密件抄送字段(盲拷贝)?

您的问题不是很清楚。 让我把要求弄对;只有在成功注册后,您才需要该代码向用户发送电子邮件。对吗

在servlet中(在提交操作时调用)

Send email方法理想情况下会将请求发送到JMS(队列)以将电子邮件发送给所需的用户。 下面是发送电子邮件的一个片段

//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小时内得到回复”或其他什么。你不需要这个

您只需要以编程方式发送邮件。邮件应包含一个链接,该链接应激活帐户,以便用户能够登录。你可以在其他网站上看到这一点。以下是您可以进行此操作的方法:

  • 设置/准备SMTP服务器。SMTP服务器是邮件服务器。就像HTTP服务器是web服务器一样。您可以使用ISP现有的或Gmail之类的公共服务。您甚至可以设置一个完全属于自己的。比如说。无论您选择何种方式,最终都应该知道SMTP服务器的主机名、端口号、用户名和密码

  • 创建一个
    Mailer
    类,该类至少可以接受“from”、“to”、“subject”和“message”参数,并使用发送邮件。通过主机名、端口号、用户名和密码连接并登录SMTP服务器。创建邮件会话并基于给定参数发送邮件。使用运行和测试
    Mailer
    类的
    main()
    方法创建一个虚拟测试类。一旦你让它工作起来,继续下一步

  • 创建另一个数据库表
    user\u activation
    ,其中包含PK
    键和FK
    user\u id
    ,引用您应该已经拥有的
    user
    表的PK
    id
    。在现有的
    user
    表中,添加一个布尔/位字段
    active
    ,默认为
    false
    /
    0

  • 当用户在数据库中注册和插入成功时,从
    用户
    表中获取插入
    id
    ,生成一个长且唯一的
    ,并将其插入
    用户激活
    表中。准备一封带有激活链接的邮件,其中包含唯一的
    ,作为URL参数或路径,然后使用您创建的
    Mailer
    类发送此邮件

  • 创建一个映射到与激活密钥链接匹配的URL模式上的
    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();
                }       
            }