gpt4 book ai didi

Java - 如何从 phpMyAdmin 获取电子邮件地址并使用 javamail 发送

转载 作者:行者123 更新时间:2023-11-29 18:16:55 25 4
gpt4 key购买 nike

我在 NetBeans IDE 8.2 上设计了 ForgotMyPassword.java jFrame Form其中我使用 phpMyAdmin 从中获取注册用户的电子邮件地址,并使用 JavaMail 通过 MYSQL 数据库将其发送到他们的电子邮件地址

我基本上想从中获取注册用户的电子邮件地址,并使用 JavaMail 作为一次性密码 (OTP) 恢复选项,通过 MYSQL 数据库将其发送到他们的电子邮件地址

这是源代码:

    String username = usrnmfield.getText();
String email = emailID.getText();
String[] to = {"emailaddr@gmail.com"};

Connection conn=null;
PreparedStatement pstn = null;

try {

Class.forName("com.mysql.jdbc.Driver");

Connection db = DriverManager.getConnection("jdbc:mysql://localhost:3307/app" , "xxxx" , "xxxx");
pstn=db.prepareStatement("select * from register where USERNAME=? and EMAIL=?");

pstn.setString(1,username);
pstn.setString(2,email);

ResultSet i=pstn.executeQuery();

if(i.next())

{


if(JavaMail.send
("abc@gmail.com",
"xxxx",
to,
"Hello world",
"Thank you for reading my post"))

{

JOptionPane.showMessageDialog(null , " Please Check out your Inbox for any Password sent by us to you ");

}

}

else if (usrnmfield != i && emailID != i)

{

JOptionPane.showMessageDialog(null, "Wrong Username or E-Mail ID");

}

} catch(HeadlessException | ClassNotFoundException | SQLException e) {
JOptionPane.showMessageDialog(null, e);

}


}

最佳答案

一些可能有帮助的评论和调整:

  1. 关于您的应用程序设计,您应该强烈考虑另一种架构。出于安全考虑,不建议让客户端(桌面)应用程序直接使用 SQL 数据库。在客户端实现整个安全性显然是一个坏主意(并且很容易被绕过)并且难以管理。考虑在远程安全服务器上使用集中式安全数据库,该服务器提供最先进的身份验证和授权机制(例如,通过 HTTPS 上的 REST-API)。服务器端安全框架包括Keycloak、SpringSecurity、Apache Shiro、JaaS……通过搜索Web你会发现你的设计并不是那么常见。此外,对于 OTP,使用 Web 服务器或简单的远程交换似乎是显而易见的(并且您将需要它们)。您还可以考虑通过集中式 LDAP 服务器实现日志记录。

  2. 为 select 语句中的字段命名。例如。 “从注册位置选择密码...”以便您知道您期望的顺序或在使用select *时使用字段名称:

    结果集 rs = ...
    字符串 myValue = rs.getString(1);
    String myValueBis = rs.getString("密码");

  3. 始终用 try-finally block 包围数据库查询,以便关闭 ResultSet、准备好的语句和最终连接(如果不重用),并且最好按此顺序。

  4. 我不明白此条件的目的:

    else if (usrnmfield != i && emailID != i) { ...

    您正在将文本字段与结果集进行比较,但既不是文本中包含的值,也不是结果集当前行的值(参见 1)。这没有任何意义。

  5. 如果您希望允许用户根据用户名或电子邮件检索其密码,您应该考虑在 SQL 语句中使用“OR”(而不是“and”)。

  6. 使用 JavaMail 时,您必须确保您的 session 包含足够的信息来发送电子邮件。创建 javax.mail.Session 对象通常是任何 JavaMail 应用程序中的第一步。因此,您需要配置 smtp 服务器或中继,最终配置端口和身份验证。由于您没有显示 JavaMail 类的代码,因此如果您有任何问题,我建议您将其放入原始问题中,并澄清问题是什么(如果有)。

  7. 一般来说,如果您考虑将此应用程序用于商业用途或某些严肃的目的,您还应该快速考虑以加密方式存储您的密码(例如 SHA-256)。并且考虑不要通过电子邮件发送密码(如果您只存储用户密码的哈希值,这会很自然地发生......),而是向他们建议一种安全的方式来重置/更新密码。

  8. 我认为您应该使用更多代码(最好是更最终和更清晰的代码)更新您的问题,并更准确地描述您的问题。如果主持人将您的问题标记为过于“笼统”或晦涩,我不会感到惊讶。

关于Java - 如何从 phpMyAdmin 获取电子邮件地址并使用 javamail 发送,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46939721/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com