0

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

3 回答 3

0

尝试使用具有正确凭据的 Swift Mailer :)

另请查看:

于 2011-10-19T06:10:03.403 回答
0

垃圾邮件问题,原因如下

1)共享主机

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

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

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

4) 群发电子邮件

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

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

7) 从黑名单 IP(主机和 SMTP 服务器)发送

您的 IP 地址可能是新的,您的 IP 地址之前已被 Google 或 Hotmail 列入黑名单 您可以从此处的网站检查是否列入黑名单

8)验证发件人IP

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

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

1)始终使用发件人/回复地址

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

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

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

5)文本版本优于HTML

于 2011-10-19T06:26:55.340 回答
-1

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

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

应该:

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

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

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

于 2011-10-19T06:20:44.613 回答