【问题标题】:PHP spam issues with Gmail and HotmailGmail 和 Hotmail 的 PHP 垃圾邮件问题
【发布时间】:2011-12-10 15:47:57
【问题描述】:

我在 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);

【问题讨论】:

  • “垃圾邮件问题”是什么意思?主要的电子邮件提供商将邮件标记为垃圾邮件?

标签: php gmail hotmail email-spam


【解决方案1】:
【解决方案2】:

我可以看到会导致您出现问题的一件事是:

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

应该是:

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

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

我没有使用过它们,但我与来自Send Grid 的一些人交谈过,他们声称他们的服务可以帮助确保电子邮件得到正确发送。

【讨论】:

  • 谢谢,但这只是一个错字,我用虚假的电子邮件地址替换了实际的电子邮件地址。
  • 也许我是个盲人,但这两组变量看起来和我一模一样。
【解决方案3】:

由于以下原因引起的垃圾邮件问题

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

【讨论】:

  • 谢谢,服务器是 MT (dv) 服务器,我也测试过通过 SMTP 发送(通过 phpMailer),但仍然没有运气。无论如何,谢谢。
  • 您在 PHPMailer 类中使用哪种方法(“mail”、“sendmail”或“smtp”)发送电子邮件?
  • 我以前也遇到过同样的问题。请尝试直接在您的网络邮件帐户中发送。该邮件也可能会进入垃圾邮件。请尝试与我联系。
猜你喜欢
  • 2011-04-26
  • 1970-01-01
  • 2010-11-19
  • 2013-10-13
  • 2017-05-11
  • 2019-01-23
  • 2012-12-31
  • 2015-08-22
  • 2015-05-18
相关资源
最近更新 更多