使用php发送mail()但发件人名称始终为Apache

时间:2014-05-20 08:30:49

标签: php apache email sender

我真的需要一个快速修复,但没有找到解决我问题的方法。 我想向用户发送电子邮件,但发件人姓名始终显示Apache。

这是我的编码。

<?php

$password = rand(1000,9999);

$firstname = "syamsul";
$surname = "rizal";
$email = "example@yahoo.com";
$max_id = 3;


//Generate Email

$to = $email;
$subject = "Welcome to ShopOnline!";
$message = "Dear " .$firstname. ", welcome to use ShopOnline! Your Customer id is " .$max_id. " and the password is ".$password.".";
$headers = "From registration@shoponline.com.au" ;

// send mail
    mail($to,$subject,$message,$headers, "-r 4914031@yahoo.com");
    echo "Thank you for sending us feedback";
    ?>

为什么我不能将此电子邮件发送到gmail帐户但是适用于非gmail帐户?提前谢谢!

3 个答案:

答案 0 :(得分:1)

设置标题

$headers = "From: registration@shoponline.com.au" . "\r\n" .
           "Reply-To: registration@shoponline.com.au" . "\r\n" .
           "X-Mailer: PHP/" . phpversion();

更新2:

发件人姓名

$headers = "From: Sender_Name<registration@shoponline.com.au>" . "\r\n" .
           "Reply-To: registration@shoponline.com.au" . "\r\n" .
           "X-Mailer: PHP/" . phpversion();

答案 1 :(得分:1)

此问题源于您在标题字符串中缺少冒号:

$headers = "From: registration@shoponline.com.au" ;
                ^ here

添加它,它应该按预期工作。

答案 2 :(得分:0)

关于你问题的第二部分(gmail不接受电子邮件),需要做大量的考虑。

首先,您应该检查邮件相关的php.ini部分。可以指定一个-f参数,在某些服务器上将原始邮件名称从服务器的默认名称(例如“postmaster”和其他名称)更改为您想要的名称。

示例:

-finfo@domain.tld

将使您的电子邮件显示为来自info@domain.tld。请注意-f参数后的空格不足。

根据目标电子邮件服务器的挑剔程度,仅此一项就可以使您的电子邮件被接受。事实上,其中许多作为反垃圾邮件措施都会检查电子邮件标题与报告的发件人之间的一致性。

但这还不够。

某些目标服务器仍会拒绝您的电子邮件或自动将其放入垃圾邮件文件夹。

为避免这种情况,有几种措施。要执行的一些基本任务是DNS相关的:

  • 确保您的服务器具有相应的反向DNS记录(PTR)集。许多 - 特别是共享托管服务不会分配它们,您必须明确要求他们为您设置它们。 您可以使用具有常规DNS实用程序的众多网站之一来检查您的记录。 Here's a random website这样做。

您还必须设置其他DNS条目,即具有适当设置的SPF record,如:

v=spf1 +a +mx +ip4:<ip address> ?all

某些服务器只能识别具有相同设置的TXT DNS条目。