如何通过php mail发送HTML内容()

时间:2013-11-29 08:33:40

标签: apache php

我正在尝试使用此代码发送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.';
}

2 个答案:

答案 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处的日志文件,它可以帮助您解决问题。

如果您仍有问题,请仔细查看PHPMailerSwiftMailerPEAR's MailZend Framework's Zend_Mail一个优秀,全面,现代的PHP邮件库。毕竟,调试问题很容易。

答案 1 :(得分:0)

你可以这样使用phpmailer!

希望这有帮助!