因此,当我执行此操作而不修改标题信息以发送html类型的电子邮件时,它会发送,但是当我发送它时它是一个html电子邮件,它永远不会被发送。
这是代码:
<?php
$to = "someone@gmail.com";
$subject = "Order Confimation - mywebsite.com";
$headers = "MIME-Version: 1.0" . "\r\n";
$headers .= "Content-type:text/html;charset=iso-8859-1" . "\r\n";
$headers .= "From: <contact@mywebsite.com>";
$message = "
<!DOCTYPE html>
<html lang='en-us'>
<head>
<meta charset='utf-8'>
<title>Order Confirmation</title>
<style type='text/css'>
//style information
</style>
</head>
<body>
<div class='box'>
<h1 class='right'>Thanks!</h1>
//Blah blah blah
</div>
</body>
</html>
";
mail($to, $subject, $message, $headers);
if (mail($to, $subject, $message, $headers)) {
echo "<p class='hide'>E-mail Sent</p>";
} else {
echo "<p class='hide'>Problem</p>";
}
?>
它返回发送的电子邮件,但电子邮件永远不会进入收件箱
有什么建议吗?
还启用了梨包。
答案 0 :(得分:2)
上面写的代码没有任何问题(除了你调用mail()
两次 - 一次在错误检查循环之外,一次在'if'之内 - 所以你发送了2封电子邮件)
快速测试可以很好地传送到Google Apps电子邮件地址,因此没有任何关于特定应该导致问题的代码。
垃圾邮件过滤是一种累积游戏。可能存在多个小错误,其中任何一个都不会标记为垃圾邮件,但会累积超出限制的分数。
在这种情况下,您只发送一个没有text / plain组件的HTML电子邮件。这是对你的分数的负面影响,似乎是打破骆驼背部的吸管。如果您从名声不佳的共享主机发送,您可能会得到更多的反对,并且您的PHP邮件设置可能会推送无效的返回路径或其他基于原因的错误,这也是一个错误。
您可以尝试按http://krijnhoetmer.nl/stuff/php/html-plain-text-mail/
发送包含text / plain和text / html的multipart如果这不起作用,那么如果您发布成功明文电子邮件的完整标题,那么我可能会看到您是否有其他指标。
Gmail会接受大多数邮件,但在接受后只是黑洞,所以如果您使用它进行测试,则不会获得太多反馈。
电子邮件是一个棘手的游戏,如果您需要为应用程序的成功而获得交付,您可能需要考虑使用第三方服务:
这些服务的设计目的是从应用程序发送事件驱动的电子邮件,并处理ISP交付端的所有混乱。
完全披露:我是PostageApp的Deliverability人员
答案 1 :(得分:0)
我注意到你没有
$headers .= 'To: ';
这可能与它有关吗?
答案 2 :(得分:0)
如果您在php中使用邮件功能,我认为您需要包含外发邮件的SMTP设置。因此从技术上讲,您的邮件将被报告为已发送但不会通过邮件提供商。 (我知道你在使用邮件功能时需要在java中这样做。)
答案 3 :(得分:0)
mail函数返回true,所以你应该说:
// mail() function return 0 if all right, so compare this with 0
if (mail($to, $subject, $message, $headers)) {
echo "E-mail Sent";
} else {
echo "Problem";
}
不是:
if (mail($to, $subject, $message, $headers)==0)