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