2016-07-25 91 views
2

我使用的是一个基本的脚本:PHP的邮件()“函数不发送1台& 1,托管服务器上的电子邮件

$recipient = "[email protected]"; 
$sender_name = $_POST['name']; 
$sender_email = $_POST['email']; 
$subject = $_POST['subject']; 
$message = $_POST['message']; 

$headers = "MIME-Version: 1.0"."\r\n"; 
$headers .= "Content-type:text/html; charset=UTF-8"."\r\n"; 
$headers .= "From: {$sender_name} <{$sender_email}>"."\r\n"; 
$headers .= "Reply-to: {$sender_name} <{$sender_email}>"."\r\n"; 

mail($recipient, $subject, $message, $headers); 

..但由于某种原因,我没有收到任何电子邮件,也没有任何错误根据PHP mail() function not sending email指示。

我认为这可能是一个服务器问题,但它完全支持1&1 states。在使用收件人,主题和正文之前,我还从此服务器/主机发送了电子邮件,所以我不确定它为什么不能正常工作!

UPDATE

发送无头,即:

mail($recipient, $subject, $message); 

..does工作,因此它似乎是用头一个问题?

+0

是否配置了您的smtp和pop服务器? –

+0

@MridulKashyap我不知道,但正如我所说 - 它已经工作过,没有我必须配置它们 –

+0

mail()函数返回什么?对或错? –

回答

3

可能有很多原因,例如你应该研究什么是SPF。

$ sender_email不能是任何地址,例如您不能发送Gmail地址并发送声称是该发件人的电子邮件,而无需进行任何身份验证,则您不能代表该地址发送电子邮件,因为我可以例如发送电子邮件把你的地址放在你的起始位置,当我不在时(我试图用简单的单词)

你应该在From中使用以@ yourdomain.com结尾的内容,并设置SPF以允许您的服务器的IP为该域发送电子邮件。或以其他方式通过SMTP发送电子邮件(例如,使用PHPmailer,这非常容易)

+0

啊,这是有道理的感谢信息 –

0

标头错误确实会影响邮件传递。例如,如果您发送的电子邮件头标题错误,假设用户的电子邮件地址为[email protected],并且他的名字是“用户用户”,并且您将电子邮件发送到[email protected],可能会导致电子邮件如果它在服务器上不匹配,则进入垃圾邮件或根本不被接受。

其中之一的Gmail具有与每个电子邮件ID相关联的名称。如果您在电子邮件中输入了错误的名称,则有可能电子邮件可能不会显示在收件箱中,有时甚至是垃圾邮件。

“但是在我附加的例子中,给出的例子使用了由表单输入设置的'from'头文件?”

如果你想让你的用户能够发送电子邮件给你,最好的办法是使用自己的电子邮件地址作为发件人的电子邮件。例如。如果您的网站位于website.com,请配置一个类似“[email protected]”的电子邮件,并将您的脚本配置为使用From标头,您可以将其发送到您自己的电子邮件中的同一个域名(website.com)或任何您授权的其他电子邮件。您可以在邮件中添加用户的实际详细信息。这将确保始终成功发送电子邮件。

相关问题