我正在尝试使用此代码发送HTML电子邮件,但我得到的只是mail()函数中的错误。
error_log为空。
有人可以告诉我为什么mail()无效吗?
$message = '<html><body>';
$message .= '<table rules="all" style="border-color: #666;" cellpadding="10">';
$message .= "<tr style='background: #eee;'><td><strong>Name:</strong> </td><td>SDFSDF</td></tr>";
$message .= "<tr><td><strong>Email:</strong> </td><td>VXCVSDF</td></tr>";
$message .= "</table>";
$message .= "</body></html>";
$to = 'my_mail@gmail.com';
$subject = 'Website Change Reqest';
$headers = "From: USER NAME"."\r\n";
$headers .= "Reply-To: USER EMAIL"."\r\n";
$headers .= "MIME-Version: 1.0"."\r\n";
$headers .= "Content-Type: text/html; charset=ISO-8859-1"."\r\n";
if (mail($to, $subject, $message, $headers)) {
echo 'Your message has been sent.';
} else {
echo 'There was a problem sending the email.';
}
答案 0 :(得分:1)
调试PHP mail()函数很难。
检查完脚本后,我可以确认您的代码运行正常。这与您的服务器或/和PHP配置有关。
从这个小片段开始,看看发生了什么:
error_reporting(E_ALL);
ini_set('display_errors', -1);
echo '<br>I am : ' . `whoami`.'<br>';
$result = mail('myaddress@mydomain.com','This is the test','This is a test.');
echo '<hr>Result was: ' . ( $result === FALSE ? 'FALSE' : 'TRUE') . ' ('. $result. ')';
echo '<hr>';
echo phpinfo();
输出后,检查您的sendmail_path
,大多数情况下sendmail_path
使用sendmail
MTA:
/usr/sbin/sendmail -t -i
编辑php.ini
文件,设置以下内容,不要忘记重新启动httpd服务器:
sendmail_path = /usr/sbin/sendmail -t -i
检查/var/log/maillog
处的日志文件,它可以帮助您解决问题。
如果您仍有问题,请仔细查看PHPMailer,SwiftMailer,PEAR's Mail或Zend Framework's Zend_Mail一个优秀,全面,现代的PHP邮件库。毕竟,调试问题很容易。
答案 1 :(得分:0)