Php邮件功能无法正常运行到enquiry@travel.com

时间:2012-03-05 05:02:40

标签: php html

在我的网站上我开发了一个邮件功能,看看我的代码..

$headers='MIME-Version: 1.0' . "\r\n";
    $headers .= 'Content-type: text/html;charset=iso-8859-1' . "\r\n";
    $headers .= 'From:'.$name.' <'.$email.'>' . "\r\n";
    $mail_body="";
    $mail_body.='<table style="border:1px solid #993300"  width="400" cellspacing="3" cellspacing="5">';
    $mail_body.='<tr><td style="padding-left:10px; line-height:25px;" >';
    $mail_body.='<center><b>Enquiry Information</b></center><br>';
    $mail_body.='Name :&nbsp;'.$name.'<br>';
    $mail_body.='Email :&nbsp;'.$email.'<br>';
    $mail_body.='Phone Number :&nbsp;'.$phno.'<br>';
    $mail_body.='Package :&nbsp;'.$package.'<br>';
    $mail_body.='Category :&nbsp;'.$category.'<br><br>';
    $mail_body.='Vehicle Type  :&nbsp;'.$vehicle.'<br><br>';
    $mail_body.='Traveling From :&nbsp;'.$travelfrom.'<br><br>';
    $mail_body.='Arrival City :&nbsp;'.$arival.'<br><br>';
    $mail_body.='Date :&nbsp;'.$date.'<br><br>';
    $mail_body.='Adult :&nbsp;'.$adult.'<br><br>';
    $mail_body.='Children :&nbsp;'.$children.'<br><br>';
    $mail_body.='Food :&nbsp;'.$food.'<br><br>';
    $mail_body.='Travel Requirements :&nbsp;'.$requirement.'<br><br>';
    $mail_body.='Duration :&nbsp;'.$duration.'<br><br>';
    $mail_body.=' promotions :&nbsp;'.$promotion.'<br><br>';
    $mail_body.='Addons :&nbsp;'.$addone.'<br><br>';
    $mail_body.='Preferred Destinations :&nbsp;'.$destination.'<br><br>';
    $mail_body.='</td></tr>';
    $mail_body.='</table>';
    $mailSend=mail('enquiry@travel.com', "Country Travelmart" , $mail_body, $headers);
    if($mailSend){
            header("location:success.html");
            }else{
            header("location:sorry.html");
            }

我在邮件功能之后看到success.html页面。但是'enquiry@travel.com中没有邮件。我已将邮件地址更改为我的电子邮件地址,我收到了邮件。那么为什么邮件不会发送到'enquiry@travel.com。

有人知道吗?

请回复

4 个答案:

答案 0 :(得分:1)

我认为使用PHPMailer可以帮助您增加阻止电子邮件成为垃圾邮件的机会。

答案 1 :(得分:0)

垃圾邮件?电子邮件被过滤?发送电子邮件的服务器是否将travel.com解析为与您相同的IP?

很明显,如果您的PHP代码发送到其他电子邮件地址,则其中没有错误。

答案 2 :(得分:0)

某些邮件服务器需要某些设置才能发送电子邮件,例如与php无法在其本机库中处理的服务器的安全SMTP连接。

Pear有一个库,可用于在http://pear.php.net/package/Mail

附加SMTP身份验证

此外,您可能希望通过将自己的电子邮件地址设置为发件人来进行问题排查 - 如果发送退回电子邮件,您将能够接收该邮件并进一步排查。

答案 3 :(得分:0)

如果邮件通过其他帐户并返回此帐户的成功但从未显示,则问题不在于代码,而是您的邮件被目标服务器阻止。

可能的原因:

  1. 目标服务器认为它是垃圾邮件。这几乎可以肯定。我曾经为云垃圾邮件服务工作,使用PHP邮件和其他盲转移代理的网络开发人员讨厌我们。

  2. 目标服务器仅允许发送某些IP(通常是防火墙或白名单)。除非你知道travel.com的IT人员并给他们买啤酒,否则你可能无法解决这个问题。

  3. 目标服务器拒绝具有其不理解,根本未设置或通常关闭的特定标头的邮件。

  4. 可能的解决方案:

    1. 唯一可能涉及保持当前代码的解决方案是更改或向传出消息添加标头。这可能不是最佳解决方案,因为:

      • 标题可能没问题,但邮件因其他原因而被屏蔽。
      • 如果是标题,请跟踪哪一个需要使用完整标题回复消息(通常是反弹回复会有,但并非总是如此)
      • 使用PHP的邮件功能已过时,并不适合任何类型的邮件活动(因为您看到的原因)
    2. 使用第三方邮件库,如Pear的Mail类或PHPMailer(我使用的)。但请注意,这些工作更可靠的原因是因为您提供SMTP服务器详细信息和凭据,与Outlook或Thunderbird相同。 PHP的邮件功能使用主机服务器的SMTP服务器发送,这会导致像您这样的问题,但也不需要密码和使用权限。话虽如此,最好通过已注册和验证的地址发送,因为它不那么垃圾,而且因为您的帐户的SMTP服务器可以为您担保,可以这么说。但我会投资购买一个电子邮件帐户只是为了在PHP脚本中使用,而不是使用您的个人帐户。此外,请注意GMail是一个真正令人头疼的问题,所以如果可以的话,请跳过它。

    3. 专用群发邮件帐户,如Amazon SES或MailChimp。这两个世界中最好的,因为它们比SMTP服务器更好地发送批量邮件,它与您使用它们设置的用户帐户绑定,而不是您的实际电子邮件地址,并且大多数都提供PHP库。捕获:它们并不便宜。获得良好投资回报的规模经济每天都有大量的电子邮件。

    4. 我的建议是使用免费且受人尊敬的邮件程序库并支付(如果您还没有)新的电子邮件地址,仅供网站发送邮件。如果它发送的邮件数量超过邮件服务器一天所能处理的数量,请查看群发邮件服务。