Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/237.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 我需要什么才能获得符合要求的电子邮件头_Php_Email_Header - Fatal编程技术网

Php 我需要什么才能获得符合要求的电子邮件头

Php 我需要什么才能获得符合要求的电子邮件头,php,email,header,Php,Email,Header,我试图从我正在建设的网站发送电子邮件,但它最终被放在yahoo垃圾邮件文件夹中。它是发送凭证的电子邮件。我该怎么做才能使它合法化 $header = "From: site <sales@site.com>\r\n"; $header .= "To: $name <$email>\r\n"; $header .= "Subject: $subject\r\n"; $header .= "Reply-To: site <sales@site.com>" . "\

我试图从我正在建设的网站发送电子邮件,但它最终被放在yahoo垃圾邮件文件夹中。它是发送凭证的电子邮件。我该怎么做才能使它合法化

$header = "From: site <sales@site.com>\r\n";
$header .= "To: $name <$email>\r\n";
$header .= "Subject: $subject\r\n";
$header .= "Reply-To: site <sales@site.com>" . "\r\n";
$header .= "MIME-VERSION: 1.0\r\n";
$header .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$phpversion = phpversion();
$header .= "X-Mailer: PHP v$phpversion\r\n";
mail($email,$subject,$body,$header);
$header=“From:site\r\n”;
$header.=“收件人:$name\r\n”;
$header.=“主题:$Subject\r\n”;
$header.=“回复:站点”。“\r\n”;
$header.=“MIME-VERSION:1.0\r\n”;
$header.='内容类型:文本/html;字符集=iso-8859-1'。“\r\n”;
$phpversion=phpversion();
$header.=“X-Mailer:PHP v$phpversion\r\n”;
邮件($email、$subject、$body、$header);
  • 不要在电子邮件中使用HTML
  • 通过具有静态IP和反向DNS(PTR)的合法邮件服务器发送,该DNS指向机器的真实主机名(并匹配正向查找)
  • 包括邮件ID(或确保本地邮件发送人为您添加一个)
  • 浏览你的电子邮件,看看它符合哪些糟糕的评分规则。避免匹配它们
  • 用于对邮件进行数字签名
此外,根据site.com的说明,确保电子邮件的IP地址是合法的电子邮件来源。如果site.com没有SPF记录,添加一个(当然允许有问题的IP地址)可能有助于让电子邮件通过垃圾邮件过滤器


如果你确实需要在你的电子邮件中使用HTML,请确保你也包括一个纯文本版本;你应该使用“multipart/alternative”的内容类型,而不是“text/html”。

我刚刚从我的雅虎成功地尝试了以下内容!网站托管帐户:

$email = "me@site.com"; $subject = "Simple test"; $body = "Simple test"; $header = "From: site \r\n"; $header .= "To: $name \r\n"; $header .= "Subject: $subject\r\n"; $header .= "Reply-To: site " . "\r\n"; $header .= "MIME-VERSION: 1.0\r\n"; $header .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; $phpversion = phpversion(); $header .= "X-Mailer: PHP v$phpversion\r\n"; mail($email,$subject,$body,$header); $email=”me@site.com"; $subject=“简单测试”; $body=“简单测试”; $header=“From:site\r\n”; $header.=“收件人:$name\r\n”; $header.=“主题:$Subject\r\n”; $header.=“回复:站点”。“\r\n”; $header.=“MIME-VERSION:1.0\r\n”; $header.='内容类型:文本/html;字符集=iso-8859-1'。“\r\n”; $phpversion=phpversion(); $header.=“X-Mailer:PHP v$phpversion\r\n”; 邮件($email、$subject、$body、$header); 但是,标题中有一些重复项,您只需执行以下操作:

$email = "me@site.com"; $subject = "Simple test"; $body = "Simple test"; $header = "From: site \r\n"; $header .= "MIME-VERSION: 1.0\r\n"; $header .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; $phpversion = phpversion(); $header .= "X-Mailer: PHP v$phpversion\r\n"; mail($email,$subject,$body,$header); $email=”me@site.com"; $subject=“简单测试”; $body=“简单测试”; $header=“From:site\r\n”; $header.=“MIME-VERSION:1.0\r\n”; $header.='内容类型:文本/html;字符集=iso-8859-1'。“\r\n”; $phpversion=phpversion(); $header.=“X-Mailer:PHP v$phpversion\r\n”; 邮件($email、$subject、$body、$header);
Ted的建议很好,Tim的建议也很好,但我唯一能够可靠地将电子邮件发送到Yahoo/Hotmail/etc的方法就是使用PEAR电子邮件类。试试这些&(假设你的服务器正常)我可以保证它能正常工作。

检查rfc 822和rfc 2045的电子邮件格式。我发现python的电子邮件类非常容易使用。我假设php的PEAR也有同样的功能(根据之前的邮件)。此外,标头和正文之间用“\r\n\r\n”分隔,不确定代码是否自动插入,但可以尝试将其附加到标头


我不认为DK/SPF是必要的(因为有很多Web服务器没有DK/SPF支持)。可能有很多因素会导致它被阻止(至少10K种不同的标准和方法..p0f、greylisting、greylisting、blacklisting等)。确保你的电子邮件格式正确(这会产生很大的不同)。查看为您生成完整标题的库。。这样你就不会犯任何错误。

除了Ted Percival的建议外,你还可以尝试使用创建电子邮件,而不是手动创建邮件头。我广泛使用过这门课,没有遇到过被雅虎或其他人作为垃圾邮件拒绝的问题。

Ted和Tim有很好的建议。Shabberobe也是如此。我们使用PHPMailer,垃圾邮件过滤器没有任何问题

需要注意的一点是,如果您使用的是MIME格式,许多垃圾邮件过滤器将被视为没有针对您的文本版本。您可以自己添加所有的标题和文本版本,或者让PHPMailer或PEAR邮件库为您处理这些内容。有一个文本版本可能有帮助,也可能没有帮助,但这是一个良好的做法和用户友好


我意识到您的代码示例只是一个示例,但值得一提的是:永远不要将用户提供的数据放到您的邮件头中。确保您验证了它是您期望的数据。将php邮件脚本转换为开放中继非常简单,没有人希望这样做。

添加SPF记录非常简单。你应该试试

这是给dreamhost plus谷歌邮箱的 您还应该广告您的Web服务器ip地址(在我的情况下,谷歌邮件前的一行) 最后一行告诉服务器做一个软拒绝(标记为垃圾邮件,但不要删除),我用它代替“-”(删除),因为谷歌文档这么说:-)

这是一个TXT记录 v=spf1 ip4:64.111.100.0/24 ip4:66.33.201.0/24 ip4:66.33.216.0/24 ip4:208.97.132.0/24 ip4:208.97.187.0/24 ip4:208.113.200.0/24 ip4:208.113.244.0/24 ip4:208.97.132.74 ip4:67.205.36.71 包括:aspmx.googlemail.com mx~全部


希望它能有所帮助。

还有一种可能是“sendmail”(位于PHP mail()函数下面)需要额外的参数。如果返回头(例如返回路径)未设置为所设置的值,则可能需要使用第五个mail()参数。例如:

mail('recipient@domain.com', 'Subject', $mail_body, $headers, " -f sender@domain.com");
有一些进一步的证据表明,真正的香草sendmail可能有这个问题!希望您的目标服务器上有“postfix”作为PHP的底层mail()支持