我在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.">rn";
$header .= "Reply-To: ".$replyto."rn";
$header .= "MIME-Version: 1.0rn";
$header .= "Content-Type: multipart/mixed; boundary="".$uid.""rnrn";
$header .= "This is a multi-part message in MIME format.rn";
$header .= "--".$uid."rn";
$header .= "Content-type:text/plain; charset=iso-8859-1rn";
$header .= "Content-Transfer-Encoding: 7bitrnrn";
$header .= $message."rnrn";
$header .= "--".$uid."rn";
$header .= "Content-Type: application/octet-stream; name="".$filename.""rn"; // use different content types here
$header .= "Content-Transfer-Encoding: base64rn";
$header .= "Content-Disposition: attachment; filename="".$filename.""rnrn";
$header .= $content."rnrn";
$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,rndo Your download is attached.rnr";
mail_attachment($my_file, $my_path, $_REQUEST['email'], $my_mail, $my_name, $my_replyto, $my_subject, $my_message);
尝试使用具有正确凭证的Swift Mailer:)
也可以查看:
- 如何(合法地)尽量减少被视为垃圾邮件
垃圾邮件问题,原因如下
1)共享主机
如果你使用的是共享主机,PHP不是解决这个问题的办法。请尝试联系您的服务器提供商。有时您的托管IP被视为垃圾邮件。尝试更改主机提供商,它可能会正常工作。
2)在电子邮件正文中添加更多链接
3)部分报头(总是使用reply-to,Ref:TrentonMcManus)
4)群发电子邮件
5)垃圾报告(点击你的链接作为垃圾邮件的人数)
6)留言不能太短也不能太长。
7)从黑名单IP地址(主机和SMTP服务器)发送
这可能是新的你的IP地址以前被谷歌或Hotmail列入黑名单你可以从这里查看是否被列入黑名单
8)验证发送方IP发件人策略框架(SPF)是一个电子邮件验证系统,旨在通过验证发件人的IP地址来检测电子邮件欺骗(一种常见的漏洞),从而防止电子邮件垃圾。
也许PHP不能解决这个问题。你可以在php代码中做如下事情
1)总是使用from/reply地址
2)在正文
中添加退订链接3)避免垃圾关键词。4)留言不能太短也不能太长。
5)文本版本优于HTML
我可以看到会给你带来问题的一件事是:
$my_mail = "someone@somehwerecom";
$my_replyto = "someone@somehwerecom";
应:$my_mail = "someone@somehwere.com";
$my_replyto = "someone@somehwere.com";
如果你从这个脚本发送大量的电子邮件,你可能被标记为垃圾邮件,如果你不遵守CAN垃圾邮件法案。它可能与你的php无关。
我还没有用过,但是我和一些来自Send Grid的人聊过,他们声称他们的服务可以帮助确保邮件正确发送。