【问题标题】:how to do email verification by sending the mail in jsp [closed]如何通过在jsp中发送邮件来进行电子邮件验证[关闭]
【发布时间】:2013-02-07 03:32:32
【问题描述】:

我有注册表。提交后转到另一个 JSP 页面,在那里它获取该表单的数据并将其存储在我的数据库中。现在我想将电子邮件发送到他为确认。我对此一无所知。请给我代码。 这是我的注册表单操作并提交代码。

<form action="signupdata.jsp" method="POST">
<input type="submit" onclick="" value="submit">

这是用于将数据保存在我的数据库中的 signupdata.jsp。

int i=st.executeUpdate("insert into userdetails(firstname,lastname,email,password,cpassword,category) values('"+fname+"','"+lname+"','"+emal+"','"+pwd+"','"+cpwd+"','"+ctgry+"')");

现在我想像大多数网站提供的那样将确认电子邮件发送到用户的电子邮件 ID。

【问题讨论】:

  • thanx,我已经编辑了这个问题。请检查一下。

标签: java registration


【解决方案1】:

firtPage.jsp

中编写以下代码
<form action="signupdata.jsp" method="POST">
Please enter email : <input type="text" name="email">
<input type="submit" onclick="" value="submit">
</form>

signupdata.jsp

中编写以下代码
      // Recipient's email ID needs to be mentioned.
      String to = request.getParameter("email");

      // Sender's email ID needs to be mentioned
      String from = "SENDER_EMAIL";

      // Assuming you are sending email from localhost
      String host = "YOUR_EMAIL_HOST";

      // Get system properties
      Properties properties = System.getProperties();

      // Setup mail server
      properties.setProperty("mail.smtp.host", host);

      // Get the default Session object.
      Session session = Session.getDefaultInstance(properties);

      try{
         // Create a default MimeMessage object.
         MimeMessage message = new MimeMessage(session);

         // Set From: header field of the header.
         message.setFrom(new InternetAddress(from));

         // Set To: header field of the header.
         message.addRecipient(Message.RecipientType.TO,
                                  new InternetAddress(to));

         // Set Subject: header field
         message.setSubject("SUVJECT_LINE");

         // Now set the actual message
         message.setText("YOUR MESSAGE GOES HERE");

         // Send message
         Transport.send(message);
         System.out.println("Sent message successfully....");
      }catch (MessagingException mex) {
         mex.printStackTrace();
      }
   }

【讨论】:

  • 只需将虚拟凭据替换为您的实际凭据即可。如果您有任何异常,请告诉我。
  • 它在这些行中给出错误。会话会话 = Session.getDefaultInstance(properties); MimeMessage 消息 = 新的 MimeMessage(会话); message.setFrom(new InternetAddress(from)); message.addRecipient(Message.RecipientType.TO,new InternetAddress(to));错误是,找不到 .getDefaultInstance 的 sybol,找不到 MimeMessage 的 sybol,找不到 InternetAddress 的 sybol,找不到 RecipientType 的 sybol。并且还会抛出 MessegingException 的异常,它永远不会在相应的 try 语句的主体中抛出。
  • 在你的程序中添加java邮件jar文件。
  • 我已将 javamail1_4_4.zip 添加到我的库中。并写下此导入仍然无法正常工作。 :(
【解决方案2】:

问题的确切代码取决于您的项目,并且可能太大而无法在此处发布。我建议您不要寻找代码 sn-ps,而应该询问适合您的问题域的通用解决方案/库,然后在谷歌上搜索基于此的代码示例。

在这种情况下,您可以使用Java Mail API 发送邮件。只需 google 即可获取 Java Mail 代码示例。

如果你使用 Spring 框架,JavaMailSenderImpl 提供了一种方便的方式来发送邮件。

<bean id="mailSender" class="com.kshitiz.MailUtil"
    init-method="init" destroy-method="destroy">
    <constructor-arg index="0">
        <bean id="mailSenderMain" class="org.springframework.mail.javamail.JavaMailSenderImpl"
            p:host="${host}" p:port="${port}"
            p:username="${username}" p:password="${password}">
            <property name="javaMailProperties">
                <props>
                    <prop key="mail.debug">true</prop>
                    <prop key="mail.smtp.auth">true</prop>
                </props>
            </property>
        </bean>
    </constructor-arg>
</bean>

然后在代码中 -

public class MailUtil {
    private MailSender mailSender;

    public MailUtil(MailSender mailSender)
    {
        this.mailSender=mailSender;
    }
    public void sendResetPasswordMail(String email, String password) {
        SimpleMailMessage message = new SimpleMailMessage();
        message.setFrom("mymail@gmail.com");
        message.setTo(email);
        message.setSubject("Your new password!");
        message.setText("Here is your new account login password - " + password);
        mailSender.send(message);
    }
}

为了进行验证,您可以将字段 auth_token 添加到您的 user_accounts 表中。这个 auth_token 是注册时生成的UUID。然后创建一个 servlet,它接受一个参数并根据数据库验证它。在邮件中发送指向此 servlet 的链接。如果验证成功,请清除将用户标记为已通过身份验证的 auth_token 字段。

【讨论】:

  • 我没有使用spring框架
猜你喜欢
  • 1970-01-01
  • 2011-03-21
  • 2021-12-16
  • 2021-04-05
  • 1970-01-01
  • 2012-04-11
  • 2021-08-20
  • 2021-01-16
  • 2012-04-08
相关资源
最近更新 更多