Gmail和Hotmail的PHP垃圾邮件问题

时间:2011-10-19 06:07:02

标签: php gmail hotmail email-spam

我在gMail和Hotmail中遇到以下代码时遇到了一些疯狂的垃圾邮件问题。从PHP的角度来看,我有什么问题吗?

function mail_attachment($filename, $path, $mailto, $from_mail, $from_name, $replyto, $subject, $message) {
$file = $path.$filename;
$file_size = filesize($file);
$handle = fopen($file, "r");
$content = fread($handle, $file_size);
fclose($handle);
$content = chunk_split(base64_encode($content));
$uid = md5(uniqid(time()));
$name = basename($file);
$header = "From: ".$from_name." <".$from_mail.">\r\n";
$header .= "Reply-To: ".$replyto."\r\n";
$header .= "MIME-Version: 1.0\r\n";
$header .= "Content-Type: multipart/mixed; boundary=\"".$uid."\"\r\n\r\n";
$header .= "This is a multi-part message in MIME format.\r\n";
$header .= "--".$uid."\r\n";
$header .= "Content-type:text/plain; charset=iso-8859-1\r\n";
$header .= "Content-Transfer-Encoding: 7bit\r\n\r\n";
$header .= $message."\r\n\r\n";
$header .= "--".$uid."\r\n";
$header .= "Content-Type: application/octet-stream; name=\"".$filename."\"\r\n"; // use different content types here
$header .= "Content-Transfer-Encoding: base64\r\n";
$header .= "Content-Disposition: attachment; filename=\"".$filename."\"\r\n\r\n";
$header .= $content."\r\n\r\n";
$header .= "--".$uid."--";
if (mail($mailto, $subject, "", $header)) {
    echo "mail send ... OK"; // or use booleans here
} else {
    echo "mail send ... ERROR!";
}
} 
$my_file = "f92ffc796f.jpg";
$my_path = $_SERVER['DOCUMENT_ROOT']."/resources/template/uploads/";
$my_name = "BB Avatar";
$my_mail = "someone@somehwerecom";
$my_replyto = "someone@somehwerecom";
$my_subject = "This is a mail with attachment.";
$my_message = "Hallo,\r\ndo Your download is attached.\r\n\r\";
mail_attachment($my_file, $my_path, $_REQUEST['email'], $my_mail, $my_name, $my_replyto, $my_subject, $my_message);

3 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

由于以下原因导致垃圾邮件问题

1)共享主机

如果您使用共享主机,则PHP不是此问题的解决方案。请联系您的服务器提供商。有时您的托管IP被视为垃圾邮件。尝试更改主机提供商,它可能正常工作。

2)电子邮件正文中的更多链接

3)部分标题(始终使用回复,参考答案:TrentonMcManus)

4)批量电子邮件

5)垃圾邮件举报(点击链接为垃圾邮件的人数)

6)消息不要太短或太长。

7)从列入黑名单的IP(托管和SMTP服务器)发送)

您的IP地址之前已被Google或Hotmail列入黑名单,这可能是新的 您可以通过here

从网站上查看黑名单ip

8)验证发件人IP

发件人策略框架(SPF)是一种电子邮件验证系统,旨在通过验证发件人IP地址来检测电子邮件欺骗(一种常见漏洞)来防止电子邮件垃圾邮件。

也许PHP不是这个的解决方案。你可以在PHP编码后做事

1)始终使用来自/回复地址

2)在正文中添加取消订阅链接

3)避免垃圾邮件关键字。

4)消息不要太短或太长。

5)文本版本优于HTML

答案 2 :(得分:-1)

我能看到的一件事会导致你出现问题:

$my_mail = "someone@somehwerecom";
$my_replyto = "someone@somehwerecom";

应该是:

$my_mail = "someone@somehwere.com";
$my_replyto = "someone@somehwere.com";

如果您要从此脚本发送大量电子邮件,如果您不遵守CAN SPAM Act,则可能会被标记为垃圾邮件。它可能与你的php无关。

我没有使用它们,但我与Send Grid的一些人进行了交谈,他们声称他们的服务有助于确保电子邮件得到正确传递。