通过 PHP Mailer 使用实时服务器 SMTP 服务器发送电子邮件不起作用

问题描述 投票:0回答:3

我正在使用 PHPMailer v6 并尝试从共享服务器电子邮件发送邮件。 我的代码:

require_once "vendor/autoload.php";
$mail = new PHPMailer;
$mail->SMTPDebug = 3;                               
$mail->isSMTP();                                     
$mail->Host = 'cp-ht-1.webhostbox.net';
$mail->SMTPAuth = true;                               
$mail->Username = '[email protected]'; 
$mail->Password = "**********";                           
$mail->SMTPSecure = "ssl";                           
$mail->Port = 465;                                   
$mail->From = "[email protected]";
$mail->FromName = "Full Name";
$mail->addAddress("[email protected]", "Recepient Name");
$mail->isHTML(true);
$mail->Subject = "Subject Text";
$mail->Body = "<i>Mail body in HTML</i>";
$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";
}

如果我运行该页面,它会显示成功消息,但我的收件箱中没有任何邮件。 在调试时我得到:

客户端:250 消息因通过 SMTP 身份验证进行欺骗尝试而被拒绝

如果我使用我的 gmail 详细信息,那么它工作正常,但不知道服务器邮件详细信息有什么问题。我搜索了很多文章,但没有得到任何解决方案。有人说删除以下行,但它不起作用..

$mail->isSMTP();

请帮忙

php phpmailer
3个回答
4
投票

错误清楚地表明您正在尝试进行电子邮件欺骗。

CLIENT: 250 Message denied for spoofing attempt via SMTP Auth

有关电子邮件欺骗的更多信息:

电子邮件欺骗是伪造电子邮件标头,使邮件看起来像是来自实际来源以外的某人或某处。电子邮件欺骗是网络钓鱼和垃圾邮件活动中使用的一种策略,因为当人们认为电子邮件是由合法来源发送时,他们更有可能打开电子邮件。

解决方案: 正如我在您的代码中看到的,您已经将

$mail->From
设置为 Gmail 帐户。它不属于您的域,最终会失败。

$mail->SetFrom = "[email protected]";
更改为
$mail->SetFrom = "[email protected]";

如果您想回复“[email protected]”,可以添加replyTo到“[email protected]

谢谢。


0
投票

您可以使用下面的代码和库。我想这会解决你的问题。

包括(class.phpmailer.php);
$mail = 新 PHPMailer(); // 创建一个新对象
$mail->IsSMTP(); // 使能够 SMTP
$mail->SMTPDebug = 0; // 调试:1 = 错误并且 messages, 2 = 仅消息
$mail->SMTPAuth = true; // 已启用身份验证
$mail->SMTPSecure = 'ssl'; // 安全的 GMail 需要启用传输
$mail->Host = 'smtp.gmail.com';
$mail->端口 = 465;
$mail->用户名 = '[email protected]';
$mail->密码 = '邮件密码';

$mail->SetFrom('[email protected]');
$mail->Subject = '账户 激活';
$mail->Body = '测试';
$mail->Body .= '点击 在这里激活';
$mail->AddAddress("[email protected]');
if(!$mail->Send()){
echo '邮件错误:' 。 $mail->ErrorInfo;
}else{
echo '消息已发送。';
}
?>

您可以在此网址获取库文件

https://github.com/mktomanikandan/phpmailer


0
投票

phpmailer 如何在实时服务器中工作?该代码的过程与我的代码相同,但我没有使用实时服务器在我的指定发件人中收到电子邮件,如何解决这个问题?

© www.soinside.com 2019 - 2024. All rights reserved.