即使按照THIS更改php.ini和sedmail.php文件,我也无法通过localhost Xampp发送邮件。 我在sendmail.php文件中有什么电子邮件& PassWord给这里;
auth_username=
auth_password=
请有人帮我解决这个问题。
答案 0 :(得分:0)
让我们按照一些步骤解决此问题。
<强> 1。确保启用错误报告并设置为报告所有错误(使用.php文件中的代码)
error_reporting(-1);
ini_set('display_errors', 'On');
set_error_handler("var_dump");
<强> 2。检查服务器的邮件日志
您的 localhost 应记录所有通过它发送电子邮件的尝试。这些日志的位置将是用户在日志下的根目录。内部将是服务器报告的错误消息(如果有),与您尝试发送电子邮件有关。
第3。确保在localhost上设置了邮件服务器
如果使用 XAMPP 在本地工作站上进行开发,则工作站上可能未安装电子邮件服务器。如果没有, PHP 默认情况下无法发送邮件。
您可以通过安装基本邮件服务器来解决此问题。对于Windows,您可以使用free Mercury Mail。
您还可以使用 SMTP 发送电子邮件。请参阅此answer以重新检查如何执行此操作。
<强> 4。使用消息
检查mail()是否返回true或false请使用以下代码,让我知道发生了什么。此代码将显示实际的错误消息,我们可以解决此问题。
替换的
mail($to, $subject, $message, $headers);
用的
$mailReturn = mail($to, $subject, $message, $headers);
print('<pre>');
print_r($mailReturn);
print('</pre>');
exit();
如果以上3个步骤完成但没有成功,请按照步骤4.让我知道此代码打印的内容。
<强> 5。用于从localhost发送邮件的SMTP设置(在php.ini中)
如果您使用 Gmail ,那么您很幸运。 Gmail 允许我们使用 SMTP ,前提是您必须使用自己的用户名和密码对其进行身份验证。要使用 Gmail SMTP ,值如下所示:
//Set the hostname of the mail server
$mail->Host = "smtp.gmail.com";
//enable this if you are using gmail smtp, for mandrill app it is not required
//$mail->SMTPSecure = 'tls';
//Set the SMTP port number - likely to be 25, 465 or 587
$mail->Port = 25;
//Whether to use SMTP authentication
$mail->SMTPAuth = true;
//Username to use for SMTP authentication
$mail->Username = "YOUR.ID@GMAIL.COM";
//Password to use for SMTP authentication
$mail->Password = "YOUR_PASSWORD";
或者,如果您不想使用 Gmail 帐户,我建议您在Mandrill创建一个帐户并获取 SMTP 主持人,用户名和密码。我测试了gmail和mandrill,他们的工作非常好。
//Set the hostname of the mail server
$mail->Host = "smtp.mandrillapp.com";
//Set the SMTP port number - likely to be 25, 465 or 587
$mail->Port = 25;
//Whether to use SMTP authentication
$mail->SMTPAuth = true;
//Username to use for SMTP authentication
$mail->Username = "YOUR_REGISTER_EMAIL@MANDRILL.COM";
//Password to use for SMTP authentication
$mail->Password = "YOUR_PASSWORD";
确保检查所有变量值,并在需要时更改。
答案 1 :(得分:0)
您可以使用SMTP邮件发送库并尝试该功能从localhost发送邮件