带有phpMailer问题的md5加密密码

时间:2012-06-19 22:36:38

标签: php

  

可能重复:
  md5 password with phpMailer

各位大家好,并提前感谢您阅读本文。 我以md5格式在我的数据库中存储了电子邮件帐户的密码。然后,当我通过phpMailer使用以下代码向网站管理员发送通知电子邮件时,我得到一个stmp连接失败错误。没有md5加密的相同代码可以很好地工作。

  $mail = new PHPMailer(); 
  $mail->IsSMTP(); // send via SMTP
  $mail->SMTPAuth = true; // turn on SMTP authentication
  $mail->Username = $USR_EMAIL; // SMTP username
  $mail->Password = md5($MAIL_PWD); // SMTP password
  .
  .
  .

任何人都知道为什么不发送带有md5密码的电子邮件?我应该改变一下class.phpMailer吗?感谢您阅读本文

2 个答案:

答案 0 :(得分:2)

看起来你的密码是双重的。正如你所说,它以md5格式存储在数据库中,然后再次md5,所以你实际上在做:

$passwd = 'hello';
$mail->Password = md5(md5($passwd));

也许

$mail->Password = $MAIL_PWD;

会奏效。

但是,请注意,您通常无法将md5哈希值发送到邮件服务器并使其正常工作。然后,服务器将对您发送的密码文本进行自己的散列/加密,密码的md5与实际密码有很大不同。您需要发送密码的REAL原始文本,而不是散列版本。

答案 1 :(得分:1)

您说数据库中的密码以MD5格式存储。如果我再看看你现在的流程是:

数据库(MD5中的密码) - > PHP代码(密码 转换为MD5 )(访问SMTP)

在你这样做的地方:转换为MD5你实际上是这样做的:md5(md5(“password”))。如果我在终端上这样做,我会得到:

localhost:~ user$ md5 -s password
MD5 ("password") = 5f4dcc3b5aa765d61d8327deb882cf99
localhost:~ user$ md5 -s 696d29e0940a4957748fe3fc9efd22a3
MD5 ("5f4dcc3b5aa765d61d8327deb882cf99") = 696d29e0940a4957748fe3fc9efd22a3

如果不是这种情况,那么可以尝试在PHPMailer源代码中查看密码方法,如果它已经转换为MD5。也许在类/对象中设置也可以选择使用什么散列方法?