我试图通过PHP mail()函数发送HTML内容。我不知道我的代码有什么问题。我尝试了很多方法,花了几个小时。但是,没有任何成效。有人能告诉我我的代码有什么问题吗?
<?php
$to = "shakthik92@gmail.com";
$today = date("Y/m/d");
$today = $today." 00:00";
$count_cash_inc = mysql_query("SELECT sum(income) as inc, sum(expense) as exp FROM journal_entry WHERE `date` >= '$today'");
$inc = mysql_fetch_array($count_cash_inc);
$income_c = $inc['inc'];
$epense_c = $inc['exp'];
$counter_cash = $income_c - $epense_c;
$subject = "Daily Report From Sri Sankalpa";
$headers = "From: info@srisankalpa.com\r\n";
$headers .= "Reply-To: info@srisankalpa.com\r\n";
$headers .= "CC: admin@srisankalpa.com\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: text/html; charset=UTF-8\r\n";
$message = '<center><h1>Sri Sankalpa Daily Journal Report</h1>';
$message .= '<br><table><tr><td>Date</td><td>Total Income</td><td>Total Expense</td><td>Balance</td></tr>';
$message .= '<tr><td>'.date("d-m-Y").'</td><td>'.$income_c.'</td><td>'.$epense_c.'</td><td>'.$counter_cash.'</td></tr></table><br>';
$message .= '<p>To Know More... Please Click <strong><a target="_blank" href="http://srisankalpa.com/demo/journal_entry.php">HERE</a></strong></p></center>';
mail($to, $subject, $message, $headers);
?>
我尝试删除\ r,\ r \ n并将charset = UTF-8更改为charset = iso-8859-1。但没有任何作用。期待转发您的帮助。邮件完美无误地发送为纯文本
$headers .= "Content-Type: text/html; charset=UTF-8\r\n";
答案 0 :(得分:4)
我已经在我的在线服务器上运行了你的脚本,它似乎工作正常,虽然我不包括你的SQL查询和变量。
可能有很多原因导致您的电子邮件未被发送。
如果您在本地主机上运行此脚本,mail
很可能无法正常工作,因为您的本地主机上没有设置邮件服务器。阅读this answer on setting up a mail server on your localhost (XAMPP)。
在服务器日志中查看尝试发送邮件时可能出现的任何错误。日志文件通常可以在logs
文件夹或类似文件夹中找到服务器的根目录。 This answer will help you identify the mail logs location
与您的主人核实。根据您的主持人,他们可能会阻止或不阻止外发电子邮件。很多人使用PHP的mail
意图不好,所以有些主机可能只是禁用它。他们希望您使用SMTP服务器。
检查您的垃圾邮件文件夹。 Gmail不是通过mail
发送的电子邮件的粉丝,很可能会将您的电子邮件放入垃圾邮件文件夹。
在某些情况下,使用\n\r
可能会导致标题字符串中出现重复的换行符。请尝试使用\r
或\n
。
尝试从$headers .= "Content-Type: text/html; charset=UTF-8\r\n";
切换到$headers .= "Content-Type: text/html; charset=iso-8859-1\r\n";
mail();
要在本地主机上发送邮件,最好使用PHPMailer之类的内容。这将允许您通过SMTP服务器发送邮件。有一个方便的教程here。