2016-10-26 221 views
1

正确显示我有以下代码发送我的电子邮件:头不是电子邮件PHP邮件

$EmailFrom= "[email protected]"; 
$EmailTo = "[email protected], [email protected]"; 
$Subject = "Contact The Loft"; 

$success = mail($EmailTo, $Subject, $Body, $EmailFrom); 

当我提交我的形式,它正确地发送邮件,但是,我的电子邮件显示不正确的标题。看看下面的图片:

header-mail

我不想[email protected]显示为标题,所以这就是为什么我搜索谷歌直通,我发现我需要定制我的标题。所以我做了以下,但现在没有发送电子邮件。它似乎有一些错误的标题:

<?php 
$EmailFrom= "From: HudsonLofts <[email protected]>\r\n"; 
$EmailFrom.= "X-Mailer: PHP/" . phpversion()."\r\n"; 
$EmailFrom.= "MIME-Version: 1.0" . "\r\n"; 
$EmailFrom.= "Content-type: text/html; charset=iso-8859-1 \r\n"; 
$EmailTo = "[email protected], [email protected]"; 
$Subject = "Contact The Hudson Loft"; 

而这正是我所说的邮件功能:

$success = mail($EmailTo, $Subject, $Body, $EmailFrom); 

当我提交表单,并检查收到的电子邮件没有我的电子邮件帐户。

我会感谢您的帮助。在此先感谢

我已经意识到,当我使用FROM:邮件不发送。而且邮件功能不起作用,它返回false。但我拆下,只使用:HudsonLofts那么它的工作原理,但它没有正确地在我的电子邮件:(显示的标题

+0

请参阅邮件手册http://php.net/manual/en/function.mail.php或使用phpmailer/swiftmailer。它会使这更容易。 –

+0

谢谢,我将检查它 –

+0

顺便说一句,我从问题中删除了“phpmailer”标记,因为你的语法不是“phpmailer”,它是“'mail()”,这里有两种不同的动物。 –

回答

0

http://php.net/manual/function.mail.php
尝试在$EmailFrom使用\n代替\r\n

BTW:评论后我会重新命名$EmailFrom$additionalHeaders ;-)

编辑:
如果这不起作用,这一个行头只是尝试:
$EmailFrom = "MIME-Version: 1.0";

第二个猜测:在最后的标题行省略\r\n

+0

#1:那不应该有所作为。 #2:*“顺便说一句:我会重命名$ EmailFrom为$ additionalHeaders”*并且完全用它来做什么? –

+0

它没有工作:(当我尝试调用邮件(主题,,,等),只是返回一个0 :(感谢虽然 –

+0

这实际上取决于很多**很多 - RFC行规终结符为电子邮件标题为'\ r \ n' - *但是*如果您使用Postfix作为邮件服务器,并希望行终止符具有操作系统原生的形式......实际上,它不可能以任何方式破坏。 – CD001

0
$EmailFrom= "[email protected]"; 
$EmailTo = "[email protected], [email protected]"; 
$Subject = "Contact The Loft"; 

$success = mail($EmailTo, $Subject, $Body, $EmailFrom); 

$EmailFrom应该是:

$EmailFrom= "From: [email protected]"; 

或可能 - 但我没有检查这一点 -

$EmailFrom= "From: Staff <[email protected]>"; 

因为the fourth parameter允许您发送任何附加的头,不只是From :,因此你需要指定完整的头文件。

如果还是不行,要知道,有些供应商改写From:头,以防止滥用(如设置“来源:[email protected]”)。如果是这种情况,您将无法覆盖该情况。但是如果您与他们交谈,您可能可以通过提供商清除发件人。

当使用错误形式参数的,一切“工作”,因为你是不是真的设置任何从外地。当你开始这样做的时候,服务器可能已经把电子邮件放在了存储桶中而没有告诉你任何东西; mail()函数将会成功,因为邮件被传送到本地队列。 mail()无法知道,更不用说告诉你,本地队列会看到邮件被清除。

相关问题