为什么我的php电子邮件表单只向特定地址发送电子邮件?

为什么我的php电子邮件表单只向特定地址发送电子邮件?,php,Php,我有一个通过php提交的联系人表单,但我在将其发送到转发的电子邮件地址时遇到了问题 我将我的网站托管在iPage上,iPage上的MX记录指向悬停,我的电子邮件和域在此处注册/管理。我只设置了电子邮件转发(myname@mysite.com,它会转发到我多年来使用的电子邮件),它就像一个符咒。有没有发邮件到myname@mysite.com电子邮件被直接发送到我的收件箱,我的电子邮件,我已经永远 但是,我网站上的php联系人表单没有将信息发送到我的电子邮件中。如果我将“收件人”字段设置为发送到我

我有一个通过php提交的联系人表单,但我在将其发送到转发的电子邮件地址时遇到了问题

我将我的网站托管在iPage上,iPage上的MX记录指向悬停,我的电子邮件和域在此处注册/管理。我只设置了电子邮件转发(myname@mysite.com,它会转发到我多年来使用的电子邮件),它就像一个符咒。有没有发邮件到myname@mysite.com电子邮件被直接发送到我的收件箱,我的电子邮件,我已经永远

但是,我网站上的php联系人表单没有将信息发送到我的电子邮件中。如果我将“收件人”字段设置为发送到我一直使用的电子邮件,则联系人表单会直接将其提交到我的电子邮件。但是,如果我使用myname@mysite.com电子邮件作为“收件人”字段,联系人表单永远不会到达我的收件箱

以下是php文件:

<?php

// get the posted data  
$name = $_POST["name"];  
$band_name = $_POST["band_name"];
$email = $_POST["email"];  
$link = $_POST["link"];
$tracking = $_POST["tracking"];  
$mixing = $_POST["mixing"];
$mastering = $_POST["mastering"];
$reamping = $_POST["reamping"];
$editing = $_POST["editing"];
$other = $_POST["other"];
$comments = $_POST["comments"];
$songs = $_POST["songs"];
$link_fb = $_POST["link_fb"];
$link_yt = $_POST["link_yt"];
$link_db = $_POST["link_db"];

// check that a name was entered  
if (empty($name))  
    $error = "You must enter your name.";  
// check that an email address was entered 
elseif (empty($band_name))
    $error = "You must enter your band's name.";
elseif (empty($email))   
    $error = "You must enter your email address.";  
// check for a valid email address  
elseif (!preg_match("/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$/", $email))  
    $error = "You must enter a valid email address.";
elseif (empty($link_fb) && empty($link_yt) && empty($link_db))
    $error = "You must enter a link to for either Facebook, Youtube or Dropbox.";
elseif (empty($tracking) && empty($mixing) && empty($mastering) && empty($reamping) && empty($editing) && empty($other))
    $error = "You must check either tracking, mixing, mastering, editing or other.";
elseif (empty($comments))
    $error = "You must describe your project in detail.";
elseif (empty($songs))
    $error = "You must enter a total song number.";

// check if an error was found - if there was, send the user back to the form  
if (isset($error)) {  
    header("Location: /?e=".urlencode($error)); exit;  
}

// write the email content  
$email_content = "Name: $name\n";  
$email_content .= "Email Address: $email\n";
$email_content .= "Band Name: $band_name\n";
if (!empty($link_fb)) 
    $email_content .= "Facebook Link: $link_fb\n";
if (!empty($link_yt)) 
    $email_content .= "YouTube Link: $link_yt\n";
if (!empty($link_db)) 
    $email_content .= "Dropbox Link: $link_db\n";
$email_content .= "Looking for the following services:\n\n";
if (!empty($tracking)) 
    $email_content .= "\tTracking\n";
if (!empty($mixing)) 
    $email_content .= "\tMixing\n";
if (!empty($mastering)) 
    $email_content .= "\tMastering\n";
if (!empty($reamping)) 
    $email_content .= "\tReamping\n";
if (!empty($editing)) 
    $email_content .= "\tEditing\n";
if (!empty($other)) 
    $email_content .= "\tOther\n\n";
$email_content .= "Songs: $songs\n";
$email_content .= "Comments:\n\n\t$comments";  

// send the email  
mail ("brian@456recordings.com", "Quote Request", $email_content, 'From: 456Recordings.com <webmaster@456recordings.com>' );  

// send the user back to the form  
header("Location: /?s=".urlencode("Thank you for your message.")); exit;  

?>

这不是您的代码的问题,而是如何输入域名和邮件服务器设置的问题。您需要让注册官将web服务器的ip地址添加到域的spf记录中

基本上,当您的电子邮件提供商收到电子邮件时,他们将查找您的域,并确保发送电子邮件的ip地址被授权为该域发送电子邮件。如果它无法识别ip地址,它只会删除电子邮件

很可能你曾经使用过的电子邮件不使用spf过滤(如gmail),而你的新电子邮件提供商使用spf过滤(如godaddy,1和1,yahoo)

如果你用谷歌搜索SPF和DKIP,你会发现更多信息

稍有改动,你的注册人是戈达迪,这是保存在我的书签里的

这不是您的问题,但我想您应该知道,在使用
位置
标题时,需要输入完整的URL。大多数浏览器在没有它的情况下都能正常工作,但你应该遵循这种做法。最终成为电子邮件中的垃圾邮件过滤器。。。。。还有一个php保存会话变量被错误地配置(我认为)。已经修好了,非常感谢!