我有以下代码来发送电子邮件:
$EmailFrom= "staff@homes.com";
$EmailTo = "alejo@yahoo.com, hunterno1@gmail.com";
$Subject = "Contact The Loft";
$success = mail($EmailTo, $Subject, $Body, $EmailFrom);
当我提交表单时,它会正确发送邮件,但在我的电子邮件中,标题显示不正确。看下图:
我不希望将THEHNOGK@SERVER179.WEB-HOSTING.COM显示为标题,这就是为什么我通过谷歌搜索,我发现我需要自定义我的标题。所以我做了以下,但现在没有发送电子邮件。看来标题有问题:
<?php
$EmailFrom= "From: HudsonLofts <staff@hobokenhomes.com>\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 = "alejo.ferguson@yahoo.com, hunternova01@gmail.com";
$Subject = "Contact The Hudson Loft";
这就是我调用邮件功能的地方:
$success = mail($EmailTo, $Subject, $Body, $EmailFrom);
当我提交表格并查看我的电子邮件帐户时,不会收到电子邮件。
感谢您的帮助。提前致谢
我意识到当我使用FROM时:邮件不会发送。此外,邮件功能不起作用,返回false。但是它我删除了FROM并且只使用:HudsonLofts然后它可以工作,但标题在我的电子邮件中没有正确显示:(
答案 0 :(得分:0)
见http://php.net/manual/function.mail.php
尝试在\n
中使用\r\n
代替$EmailFrom
。
顺便说一句:我会将$EmailFrom
重命名为$additionalHeaders
; - )
评论后编辑:
如果这不起作用,请尝试使用这一行作为标题:
$EmailFrom = "MIME-Version: 1.0";
第二个猜测:在最后一个标题行中省略\r\n
。
答案 1 :(得分:0)
$EmailFrom= "staff@homes.com";
$EmailTo = "alejo@yahoo.com, hunterno1@gmail.com";
$Subject = "Contact The Loft";
$success = mail($EmailTo, $Subject, $Body, $EmailFrom);
$EmailFrom
应该是:
$EmailFrom= "From: staff@homes.com";
或可能 - 但我还没有检查出来 -
$EmailFrom= "From: Staff <staff@homes.com>";
由于the fourth parameter允许您发送任何附加标头,而不仅仅是发件人:,因此您需要指定完整标头。
如果仍然无效,请注意,某些提供商会重写“发件人:”标题以防止滥用(例如设置“来自:barack.obama@whitehouse.gov”)。如果是这种情况,您将无法覆盖它。但是,如果与他们交谈,您可以与提供商清除发件人。
使用参数的错误形式时,所有内容都“有效”,因为您实际上并未设置任何“发件人”字段。当您开始这样做时,服务器可能刚刚将信息丢弃在位桶中而没有告诉您任何事情; mail()函数会成功,因为邮件 已传递到本地队列。 mail()无法知道,更不用说告诉你,本地队列会看到邮件已被清除。