在我的网站上我有一个PHP脚本,可以自动邮寄给我的客户关于订单的确认。 我的网站的域名也注册到了我的网站。 我有很多问题使用mail()函数发送电子邮件到某些电子邮件帐户......很多我的用户与我联系,说他们从未收到我的自动电子邮件!所以这是一个非常大的问题!共享主机发送的电子邮件被阻止。有没有办法避免这种情况?
给我更多问题的帐户是comcast.net,uol.com,mchsi.com和其他人!我已经联系了这些电子邮件服务提供商的支持中心,要求将我的IP从阻止列表中删除。
电子邮件的标题是这样的:
$header = "Sender: $from_mail\n";
$header .= "From: Account <$from_mail>\n";
$header .= "Reply-To: Account <$from_mail >\n";
$header .= "Content-Type: multipart/mixed; boundary=$mixed_boundary\n";
$header .= "Mime-Version: 1.0\n";
$header .= "X-Mailer: PHP/".phpversion()."\n";
$body = "\n--$mixed_boundary\n";
.
.
.
.
$body .= "\n\n--$mixed_boundary--";
mail($to, $subject, $body, utf8_encode($header), "-f$from_mail");
有东西,我可以尽量避免这个问题? 有人知道我在哪里可以知道用于发送电子邮件的服务器的IP地址是什么,这些电子邮件被认为是PHP mail()函数?
在此先感谢您的回复!
嗨,
今天仍然有些电子邮件提供商的服务,如康卡斯特,继续挡住了我的IP地址,说,我的邮件服务器发送垃圾邮件...我要求从黑名单移除,但他们的系统继续阻止他们!我不知道还有什么能做些什么......我已经按照你的建议和代码如下所示:
$md5 = md5(date('r', time()));
$mixed_boundary = "PHP-Mixed-$md5";
$alt_boundary = "PHP-Alt-$md5";
$header = "Sender: $from_mail\r\n";
$header .= "Errors-To: $from_mail\r\n";
$header .= "From: account <$from_mail>\r\n";
$header .= "Reply-To: $from_mail\r\n";
$header .= "Content-Type: multipart/mixed; boundary=$mixed_boundary\r\n";
$header .= "Mime-Version: 1.0\r\n";
$header .= "X-Mailer: PHP/".phpversion()."\r\n";
$body = "\n--$mixed_boundary\n";
$body .= "Content-Type: multipart/alternative; boundary=$alt_boundary\n";
.
.
.
.
$body .= "--$mixed_boundary\n";
$body .= "Content-Disposition: attachment filename=\"...\"\n";
$body .= "Content-Type: application/octet-stream; x-unix-mode=0644; name=\"...\"\n";
$body .= "Content-Transfer-Encoding: base64\n";
.
.
.
.
$body .= "\n\n--$mixed_boundary--";
mail($to, $subject, $body, utf8_encode($header), "-f$from_mail");
建议?
再次感谢!
看看mail()函数的PHP文档,它们的标头用“\ r \ n”分隔,而不是像你的例子中的“\ n”。可能是规范要求“\ r \ n”,但是您的方法仍然有效,因为某些邮件服务器在接受方面是自由的。 – Inshallah 2009-08-30 15:09:33
果然,PHP文档说只是“\ n”不符合RFC 2822(Internet邮件格式) – Inshallah 2009-08-30 15:12:04
,但“\ r \ n”分隔符是用于asp服务器吗?或不?我认为PHP服务器使用“\ n”作为新行字符! – BitDrink 2009-08-30 15:13:16