【发布时间】:2019-04-17 20:52:44
【问题描述】:
我在我的网站上使用 PHPMailer,但它返回一个错误:
您必须提供至少一个收件人电子邮件地址。 我查看了以下页面以寻找答案: https://github.com/PHPMailer/PHPMailer/issues/441 https://github.com/PHPMailer/PHPMailer/issues/429
这些都没有解决我的问题。
这是它的设置方式:
<?php
$conn=mysqli_connect("localhost","sar","siarth2");
mysqli_select_db($conn,"test");
$Email=$_REQUEST["Email"];
$query=mysqli_query($conn,"select * from user where Email='$Email'");
$row=mysqli_fetch_array($query,MYSQLI_ASSOC);
require 'PHPMailer-master/PHPMailerAutoload.php';
$mail = new PHPMailer();
$mail->Host = "ssl://smtp.gmail.com";
$mail->SMTPAuth = TRUE;
$mail->Username = "sidban5679@gmail.com";
$mail->Password = "password";
$mail->Port =466;
$mail->From = "sidban5679@gmail.com";
$mail->FromName = "Sidharth";
$mail->AddAddress($row["Email"]);
$mail->isHTML(true);
$mail->Subject = "Password";
$mail->Body = "<i>this is your password:</i>".$row["Password"];
$mail->AltBody = "This is the plain text version of the email content";
if(!$mail->send())
{
echo "Mailer Error: " . $mail->ErrorInfo;
}
else
{
echo "Message has been sent successfully";
}
SQL 代码
插入user(Password、FirstName、LastName、Email)值
('friends34'、'Kaser'、'Baddal'、'banh5@gmail.com');
【问题讨论】:
-
那么,您检查过
$row["Email"]是否包含电子邮件吗? -
如果是这样,它是有效的吗?你能告诉我们吗?
-
您正在存储和邮寄纯文本密码。你有一个sql注入问题。你真的应该重新考虑一下。
-
Google SSL 端口是 465 而不是 466。
-
尝试像这样增强代码:- 3v4l.org/dLvZH 。仍然代码容易受到 SQL INJECTION 的攻击。您还需要发送密码并在查询中进行比较。以及以加密格式保存密码[使用密码散列进行加密]。