title: Reset password link in java
body: <p>I am currently implementing a forgot password function in a Java project. my methodology is,</p>
  
  <ol>
  <li><p>User clicks the forgot password link.</p></li>
  <li><p>In the forgot password page, system prompts the user to enter the email<br>
  address he/she has registered in to the system.</p></li>
  <li><p>Email which includes the given email address with reset password page link.</p></li>
  <li><p>User clicks the link and he/she get redirected to a page(reset password) 
  where user can enter his new password.</p></li>
  <li><p>In Reset Password page, the field "email address" is filled automatically<br>
  and it cannot be changed because its disabled.</p>
  
  <p>Then user enter his new password and the field related to the email 
  address in the database is updated.</p></li>
  </ol>
  
  <p>I tried this in my code but in my reset password page I didnt get the email id of the user who wants to change the password.</p>
  
  <p>MailUtil.java</p>
  
  <pre><code>package com.example.controller;
  
  import java.io.IOException;
  import java.security.Security;
  import java.sql.Connection;
  import java.sql.ResultSet;
  import java.sql.SQLException;
  import java.sql.Statement;
  import java.util.Properties;
  
  import javax.mail.Message;
  import javax.mail.PasswordAuthentication;
  import javax.mail.Session;
  import javax.mail.Transport;
  import javax.mail.internet.InternetAddress;
  import javax.mail.internet.MimeMessage;
  import javax.servlet.RequestDispatcher;
  import javax.servlet.ServletException;
  import javax.servlet.http.HttpServletRequest;
  
  import com.example.util.Database;
  
  public class MailUtil {
      private static final String USERNAME = "test@gmail.com";
      private static final String PASSWORD = "test";
      private static final String SUBJECT = "Reset Password link";
  
      private static final String HOST = "smtp.gmail.com";
      private static final String PORT = "465";
  
      String email;
  
      public MailUtil() {
      // TODO Auto-generated constructor stub
      email = this.email;
  }
  
      public boolean sendMail(String to, HttpServletRequest request) throws SQLException, ServletException, IOException{
          Connection conn = Database.getConnection();
          Statement st = conn.createStatement();
          String sql = "select * from login where email = '" + to + "' ";
          ResultSet rs = st.executeQuery(sql);
          String pass = null;
          String firstName = null;
          while(rs.next()){
              pass = rs.getString("pass");
              firstName = rs.getString("firstName");
          }
  
          if(pass != null){
              setEmailId(to);         
              Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
              Properties props = new Properties();
              props.put("mail.smtp.host", HOST);
              props.put("mail.stmp.user", USERNAME);
              //  If you want you use TLS
              //props.put("mail.smtp.auth", "true");
  
              props.put("mail.smtp.starttls.enable", "true");
              props.put("mail.smtp.password", PASSWORD);
              //  If you want to use SSL
              props.put("mail.smtp.port", PORT);
              props.put("mail.smtp.socketFactory.port", PORT);
              props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
              props.put("mail.smtp.auth", "true");
  
              Session session = Session.getInstance(props, new javax.mail.Authenticator() {
                  protected PasswordAuthentication getPasswordAuthentication() {
                      String username = USERNAME;
                      String password = PASSWORD;
                      return new PasswordAuthentication(username, password);
                  }
              });
  
              String from = USERNAME;
              String subject = SUBJECT;
              MimeMessage msg = new MimeMessage(session);
              try{
                  msg.setFrom(new InternetAddress(from));
                  InternetAddress addressTo = new InternetAddress(to);
                  msg.addRecipient(Message.RecipientType.TO, new InternetAddress(to));
                  msg.setSubject(subject);                
                  String vmFileContent = "Hello User, &lt;br&gt;&lt;br&gt; Please Click &lt;a href='http://192.168.15.159:8080/SampleLogin/new-password.jsp&gt;&lt;strong&gt;here&lt;/strong&gt;&lt;/a&gt; to reset your password. &lt;br&gt;&lt;br&gt;&lt;br&gt; Thanks,&lt;br&gt;ProAmbi Team";
  
                  //  Send the complete message parts
                  msg.setContent(vmFileContent,"text/html");
                  Transport transport = session.getTransport("smtp");
                  transport.send(msg);
  
                  System.out.println("Sent Successfully");
                  return true;
              }catch (Exception exc){
                  System.out.println(exc);
                  return false;
              }
          }else{
              //System.out.println("Email is not registered.");
              request.setAttribute("errorMessage", "User with this email id doesn't exist.");         
              return false;
          }
      }
  
      public String getEmailID() {
          return email;
      }
      public void setEmailId(String email) {
          this.email = email;
      }
  }
  </code></pre>
  
  <p>And My new-password.jsp.</p>
  
  <pre><code>&lt;%
      MailUtil mail = new MailUtil();
      String email = mail.getEmailID();
      System.out.println("---&gt; "+email);
  %&gt;
  </code></pre>
  
  <p>But I got the null value rather than email id.</p>
  
  <p>Can you pleas help me the solve this problem or get any other option to do this.</p>