【问题标题】:Please provide at least one recipient email address:-Mailer error while using php mailer请提供至少一个收件人电子邮件地址:-使用 php mailer 时出现 Mailer 错误
【发布时间】: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 代码

插入userPasswordFirstNameLastNameEmail)值 ('friends34'、'Kaser'、'Baddal'、'banh5@gmail.com');

【问题讨论】:

  • 那么,您检查过$row["Email"] 是否包含电子邮件吗?
  • 如果是这样,它是有效的吗?你能告诉我们吗?
  • 您正在存储和邮寄纯文本密码。你有一个sql注入问题。你真的应该重新考虑一下。
  • Google SSL 端口是 465 而不是 466。
  • 尝试像这样增强代码:- 3v4l.org/dLvZH 。仍然代码容易受到 SQL INJECTION 的攻击。您还需要发送密码并在查询中进行比较。以及以加密格式保存密码[使用密码散列进行加密]。

标签: php sql email phpmailer


【解决方案1】:

检查您的$Email$row['Email'] 是否返回任何有效的电子邮件地址。 您可以使用硬编码的收件人尝试一次。

$mail-&gt;AddAddress('receipient@example.com');

我猜从您的代码中,$Email$row['Email'] 是相同的值。因此,如果 $Email=$_REQUEST["Email"]; 收到有效的电子邮件,您可以使用 -
$mail-&gt;AddAddress($Email);

【讨论】:

  • 它不工作。它再次显示相同的错误
  • $mail->端口 =466;将 SSL 端口更改为 465
  • 我也将端口更改为 465,然后它也显示相同的错误
【解决方案2】:

除了错误的端口号、SQL 注入漏洞、纯文本密码、您使用的是过时版本的 PHPMailer,并且您的代码基于一个过时的示例之外,您没有进行任何错误检查电子邮件地址。试试这个:

if (!$mail->addAddress($row['Email'])) {
    exit(htmlspecialchars($row['Email']) . ' is not a valid email address.');
}

htmlspecialchars() 是为了避免添加 XSS 漏洞以获得满分!)

【讨论】:

  • 现在显示:它不是有效的电子邮件地址,但当我看到我的数据库时,我能够看到该电子邮件地址。
  • 在新版本中没有 PHPMailerAutoload.php 所以用什么来代替那个
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-04-13
  • 1970-01-01
  • 1970-01-01
  • 2017-02-18
  • 2013-03-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多