当前位置: 首页 > 知识库问答 >
问题:

PHPMailer-跳过向无效地址发送电子邮件

钦永贞
2023-03-14

我正在尝试通过PHPMailer发送电子邮件,它工作得很好。只有一个问题,我不知道如何解决。有可能,我可能需要尝试发送电子邮件到一个无效的地址,因为一个不存在的域。因为域名不存在,所以这些电子邮件不会被发送也没关系。当我尝试发送电子邮件时,会收到一条错误消息,PHPMailer将停止,并且不会继续向其他(有效)地址发送电子邮件。有没有办法跳过那些无效的电子邮件并强制PHPMailer继续而不显示错误消息?

错误消息:

致命错误:未捕获的PHPMailer\PHPMailer\Exception:SMTP错误:以下收件人失败:erika@dummyverein.de:域不存在:“dummyverein.de”位于。。。

服务器-

SMTP错误:RCPT TO命令失败:521 5.1.2域不存在:“dummyverein.de”

代码:

$mail = new PHPMailer(true);
$mail->CharSet = 'utf-8';  
$mail->isSMTP();
$mail->isHTML(true);
$mail->Host = 'smtp.strato.de';
$mail->Port = 587;
$mail->SMTPAuth = true;
$mail->Username = 'xxxx';
$mail->Password = 'xxxx';
$mail->SMTPSecure = 'tls';
$mail->SMTPDebug = 2;            // set to 2 to get error messages for now 
$mail->MailerDebug = false;
$mail->setFrom($absender, $name);
$mail->addAddress($to);
$mail->Subject = $subject;
         
$mail->Body = $message_other_player;

$mail->send();

共有2个答案

薛枫
2023-03-14

编辑:

因此,我使用了一个电子邮件验证功能来检查这个StackOverflow问题中是否存在域。它工作得很好。非常感谢@karim79

旧答案:

警告:以下代码可以正常工作,但它不是真正的解决方案,它只是移动了问题,因为SMTP被忽略了:

所以多亏了@Hardood,看起来这个简单的变化实际上解决了它。我以为这只是转移了问题,但现在似乎行得通。

// $mail->isSMTP();

只需注释或删除“isSMTP()”

微生季
2023-03-14

要解决此问题,请使用尝试。。。捕获

$mail=new PHPMailer(true);
try {
$mail->CharSet = 'utf-8';  
$mail->isSMTP();
$mail->isHTML(true);
$mail->Host = 'smtp.strato.de';
$mail->Port = 587;
$mail->SMTPAuth = false;
$mail->Username = 'xxxx';
$mail->Password = 'xxxx';
$mail->SMTPSecure = 'tls';
$mail->SMTPDebug = 0;
$mail->MailerDebug = false;
$mail->setFrom($absender, $name);
$mail->addAddress($to);
$mail->Subject = $subject;
$mail->Body = $message_other_player;
}

$mail->send();
      // echo 'Message has been sent';
   } catch (Exception $e) {
     //  echo "Message could not be sent. Mailer Error: {$mail->ErrorInfo}";
   }
 类似资料:
  • 我使用的PHPMailer表格在这里找到。 从网站下载的示例是“接触-3”,在引导主题中使用PHPMailer通过gmail发送SMTP电子邮件。当我使用“接触-1”时,它完全适用于我的托管域电子邮件地址,但SMTP版本适用于gmail地址,联系人表单不会提交。 在下面的代码中,我更改了以下行以添加我的gmail地址和gmail密码: 任何关于使用给定信息进行此工作的帮助都将不胜感激-提前感谢!

  • 如果PhpMailer包含堆栈(例如。它总是返回“无效地址”错误。 有没有办法忽略这张支票?还是有一个很好的理由?我似乎在代码中找不到它,因此我没有在这里包含它。 非常感谢您的帮助。

  • 我正在使用PHPMailer通过联系人表单发送电子邮件。当我在输入字段中输入无效的电子邮件地址时,电子邮件仍会发送。我想同时执行客户端和服务器端验证。 PHPMailer是否有一个内置的验证系统来检查无效的电子邮件地址?如果输入的电子邮件无效,我想返回一个错误,而不是发送电子邮件。

  • 我正在使用PHPmailer发送电子邮件。到目前为止,我成功地将电子邮件发送到一个地址。现在,我想在一次点击中发送多封电子邮件。 问题:我曾尝试使用下面的一些循环发送多封电子邮件,但我输出错误。是的,它发送电子邮件,但只发送到一个地址,并且该电子邮件地址将获取所有应该发送到其他电子邮件的电子邮件。 例如,当我发送17封电子邮件时,这17封电子邮件只发送到一个地址。电子邮件应根据数据库中的地址发送,

  • 如果PhpMailer包含堆栈(例如。它总是返回“无效地址”错误。 有没有办法忽略这张支票?还是有充分的理由?我似乎在代码中找不到它,因此我没有在这里包含它。 非常感谢您的帮助。

  • 我正在尝试使用Amazon SES发送电子邮件。我在地区工作过,刚刚把我的地区切换到,我无法向我的个人gmail账户发送电子邮件。我已经从地址验证了的