0

MySQL データベースからパスワードを取得する必要があります。そのパスワードは、JDBC を使用して Java でユーザーの有効な電子メールに送信されます。どうすればこれを実装できますか?

私が使用しているコードは次のとおりです。

public class Checkemail
{
    public String authentication( String Email ) {

        String retrievedUserName = "";
        String retrievedPassword = "";
        String status = "";

        try {
            Class.forName( "com.mysql.jdbc.Driver" );
            Connection con = DriverManager.getConnection( "jdbc:mysql://localhost:3306/xcart-432pro", "root", "" );
            PreparedStatement statement = con.prepareStatement( "SELECT * FROM xcart_customers WHERE email = '" + Email + "'" );
            ResultSet result = statement.executeQuery();

            while( result.next() ) {
                retrievedUserName = result.getString( "email" );
                retrievedPassword = result.getString("password");
            }

            if( retrievedUserName.equals( Email ) ) {
                status = "Valid Email";
            }

            else {
                status = "Invalid Email!!!";
            }
        }
        catch( Exception e ) {
            e.printStackTrace();
        }

        return status;
    }
}

ここで、メールが有効か無効かを正常に確認しました。

パスワードを取得するためのコードを作成するにはどうすればよいですか?これらのパスワードは電子メール機能に送信されますか?

編集:

今、私は以下のようにコードを変更しました:

    if(retrievedUserName.equals(Email)){
      status = "Valid Email";
      Properties props = new Properties();
        props.put("mail.smtp.host", "smtp.gmail.com");
         props.put("mail.smtp.socketFactory.port", "465");
         props.put("mail.smtp.socketFactory.class",
        "javax.net.ssl.SSLSocketFactory");
            props.put("mail.smtp.auth", "true");
        props.put("mail.smtp.port", "465");

        Session session = Session.getDefaultInstance(props,
            new javax.mail.Authenticator() {
                  protected PasswordAuthentication getPasswordAuthentication() {
                        return new PasswordAuthentication("xxxxx@gmail.com","xxxx");
                        }
                    });

                    try {

                                Message message = new MimeMessage(session);
                            message.setFrom(new InternetAddress("krishnaveni.veeman@mercuryminds.com"));
                            message.setRecipients(Message.RecipientType.TO,
                                    InternetAddress.parse(Email));
                            message.setSubject("Testing Subject");
                        message.setText("Dear Friends This is your fassword," +
                                    retrievedPassword);

                    Transport.send(message);

                        System.out.println("Done");

                        } catch (MessagingException e) {
                            throw new RuntimeException(e);
                                }
                               }
                                  else{
                         status = "Invalid Email!!!";
                          }

                                }
                            catch(Exception e){
                               e.printStackTrace();
                                   }
                             return status;

                              }


                                } 

ここで、コードでgmailのユーザー名とパスワードを公然と言及しました。

       Session session = Session.getDefaultInstance(props,
            new javax.mail.Authenticator() {
                  protected PasswordAuthentication getPasswordAuthentication() {
                        return new PasswordAuthentication("xxxxx@gmail.com","xxxx");
                        }
                    });

gmailのユーザー名とパスワードを記載せずにメールを送信しました.助けてください.どうすれば開発できますか.

4

1 に答える 1

0

有効な host を使用する必要があります。

これはあなたを助けるかもしれません..

      String host = "smtp.gmail.com"; // Host for Gmail
      Properties props = System.getProperties();
      props.setProperty("mail.user", from);
      props.setProperty("mail.password", retrievedPassword);
      props.put("mail.smtp.host", host); 
于 2012-12-14T08:50:51.670 に答える