phpmailer,但没有主机



以前我在PHP中有mail((函数来处理我的网站。现在我们为站点(nginx服务器(获得了一个域,而现在mail((只是不想行为,总是返回false。我已经为mail((设置了PHP ini,正确的域为

所以。。。我转向PHPMailer,它仍然不起作用。。。。我收到这个错误
Could not instantiate mail function.

所以我的问题是出了什么问题?我没有SMTP主机。。。我想使用本地服务器作为邮件服务器,因为它以前是工作的,我相信我有正确的设置。

已与composer一起安装。

这是我的代码:

require_once($_SERVER['DOCUMENT_ROOT']."/vendor/phpmailer/phpmailer/src/PHPMailer.php");
require_once($_SERVER['DOCUMENT_ROOT']."/vendor/phpmailer/phpmailer/src/SMTP.php");
require_once($_SERVER['DOCUMENT_ROOT']."/vendor/phpmailer/phpmailer/src/Exception.php");
$emailer = new PHPMailerPHPMailerPHPMailer();
$emailer->IsMail();

$emailer->SetFrom("noreply@my.domain");
$emailer->FromName = "My Domain";
$emailer->AddAddress($admin_data['email']);
$emailer->isHTML(false);
$emailer->Subject = "test";
$emailer->Body = " test "
if(!$emailer->send()){
give_error("Send Email Error: " . $emailer->ErrorInfo);
return false;
} 

当您想了解PHPMailer驱动的电子邮件发送失败的原因时,请务必打开PHPMailler的"SMTPDebug"选项。

为此,在实例化PHPMailer对象后,将SMTPDebug属性设置为"3"。在您的代码中,它看起来像:

//Echo errors, server responses, client message, data, commands & connection status
$emailer->SMTPDebug = 3;

这将回显电子邮件在尝试完成发送时可能溢出的所有错误、服务器响应和客户端消息。有了这个,你应该能够更好地处理可能导致你的电子邮件误发或根本不发送的原因。

即使你目前正在尝试捕捉错误,如果没有打开这个选项,它也不会捕捉到信息的全部广度和深度

但是,请记住,在投入生产之前关闭此选项。将SMTPDebug属性设置回0将确保不会向最终用户泄露错误或重要的服务器信息。

//Will disable all debugging.
$emailer->SMTPDebug = 0

您可以在PHPMailer文档中找到有关SMTPDebug属性的更多信息,该属性可能在您的代码库中命名为"PHPMailer-master/docs/"

按照故障排除指南的链接进行操作。为了使mail()功能正常工作,您需要安装一个本地邮件服务器——我建议使用postfix。这与您的代码无关。

也就是说,虽然使用本地邮件服务器是一个不错的选择,但使用SMTP到localhost比使用邮件功能更快、更安全。请参阅PHPMailer文档了解原因。

相关内容

最新更新