2012-04-11 40 views
4

我在使用PHP发送邮件时遇到了问题。邮件由Outlook正确接收,但不显示电子邮件中的“发件人”地址。php邮件与outlook无法正常工作

$subject = $_POST['message_subject']; 
$message = $_POST['speaker_description']; 
$email = $_POST['email']; 
$option = $_POST['sel_reg_options']; 
$email = substr_replace($email ,"",-1); 

$headers .= "Content-type: text/html; charset=iso-8859-1\r\n"; 
$headers .= "From:My Name<[email protected]>\r\n"; 
$headers .= "Reply-To: Registration of Interest<[email protected]>\r\n";   
$headers .= "MIME-Version: 1.0"."\r\n"; 
$mail_sent = @mail($email,$subject,$message,$headers); 
+0

你有没有试过在':'之后留下空格? – deceze 2012-04-11 05:26:56

+0

':'错过之后的空间 – 2012-04-11 05:38:13

+0

是啊试过了一个空间,但仍然没有什么是有用的我已经谷歌它如此之多现在我生病了它 – buttjee 2012-04-11 07:04:57

回答

2

你应该用双引号括名称(这也适用于回复地址名称):

$headers .= "From: \"My Name\" <[email protected]>\r\n"; 


此外,如果在Unix上运行PHP,从信封添加到$additional_parameters参数:

$mail_sent = @mail($email,$subject,$message,$headers,'-f [email protected]'); 


相反,如果在Windows上运行,设置sendmail_from INI指令亦或i ñphp.ini或使用:

ini_set('sendmail_from', '[email protected]'); 


来源:RFC2822php.net user commentIBM sendmail command reference

+0

没有其他人在Gmail中仍然是相同的消息显示完美,但前景未显示发送地址 – buttjee 2012-04-11 07:00:27

+0

你能告诉我哪个服务器(apache,IIS)和操作系统在运行PHP吗? – MrFusion 2012-04-11 08:12:54

+0

另外,你可以尝试把你的标题是这个命令? (来自,MIME,内容,回复)。最后,检查第一个'$ header'调用是否不附加数据(即'='而不是'。=')。 当调用'mail()'来查看可能的错误/警告时,删除'@'会很好。 – MrFusion 2012-04-11 08:18:33

0

我最近刚换我的电子邮件脚本PHPMailer。它使得创建和发送电子邮件变得更容易。我不再担心错误的标题和PHP和电子邮件的错综复杂。我还没有任何格式化电子邮件的问题,以便在几个电子邮件客户端中正确接收它们。