gpt4 book ai didi

php - 从PHPMailer清除上一个异常错误以进行下一个循环

转载 作者:行者123 更新时间:2023-12-03 07:48:29 24 4
gpt4 key购买 nike

可以说我有这个:

$emails = array('some1@email.com', 'some2@email', 'some3@email.com', 'some4@email.com');
foreach ($emails as $email) {
try {
$mail->addAddress($email);
$mail->send();
$mail->clearAddresses();
}
catch (Exception $e) {
if (strpos($e->errorMessage(), $email) > 0) {
// so here i can see if i have error like: SMTP Error: The following recipients failed: some2@email
echo $e->errorMessage();
echo "<br>";
echo $email;
}
else {
// so i would see if there is another error, like smtp login failed etc
// here unfortunately on third loop it gives me error from second loop that some2@email is nto valid even when i sent some3@email.com
die($e->errorMessage());
}
}
}
因此会记住并显示下一个循环中的异常,上面的输出是:
SMTP Error: The following recipients failed: some2@email: L6gvk4HSs0vIlL6gvkzbQ0 invalid destination domain <some2@email>
some3@email.com
所以我的问题是,处理错误后如何清除错误,这样我才能重新开始?

最佳答案

由于第二个地址处的异常,因此永远不会到达带有$mail->clearAddresses()的行。
因此,您的第三封邮件将同时发送到some2@emailsome3@email.com,再次引发异常。

try {
$mail->addAddress($email);
$mail->send(); // try block stops here on exception
$mail->clearAddresses(); // addresses are not cleared
} catch (Exception $e) {
// ...
}
您可以在 $mail->clearAddresses()语句之外调用 try, catch
try {
$mail->addAddress($email);
$mail->send();
} catch (Exception $e) {
// ...
}
$mail->clearAddresses();
您也可以在调用 $mail->clearAddresses()之前先调用 $mail->addAddress($email)。这样,您始终可以确保在添加地址之前已清除地址。
try {
$mail->clearAddresses();
$mail->addAddress($email);
$mail->send();
} catch (Exception $e) {
// ...
}

关于php - 从PHPMailer清除上一个异常错误以进行下一个循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64031557/

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