用PHP安全地发送许多电子邮件

时间:2012-01-13 20:51:10

标签: php email spam

我正在用PHP构建一个网站,允许用户发送邀请电子邮件。允许他们一次发送多个。

我被告知使用PHP的mail()函数是一个糟糕的选择,因为它很容易被标记为垃圾邮件。是否有某种方法可以设置此脚本,以便电子邮件不会被标记为垃圾邮件?

我已经做了很多阅读,从我今天读到的内容看,似乎有几个因素可以影响邮件是否被标记为垃圾邮件,包括:电子邮件中使用的字词;电子邮件说它们发送的域名与实际发送的域名相比较;标题格式;以及发送电子邮件的频率。

我们使用的电子邮件地址是Gmail应用。因此,如果我发送的电子邮件不“看起来”垃圾邮件,我会从Gmail发送它们,我可以限制发送的电子邮件的频率(可能每10分钟10次)然后我应该能够毫无问题地执行此操作?

修改

这不适用于简报。我是否还要担心被标记为邀请电子邮件的垃圾邮件?

3 个答案:

答案 0 :(得分:3)

虽然你的结论是正确的,但你的推理并不完全正确。 php的邮件功能不会将您的电子邮件标记为垃圾邮件,因为它会发送与其他邮件相同的电子邮件。

php的邮件功能问题是它的级别非常低,所以如果你不知道如何正确使用它,并留下电子邮件注入漏洞,人们可以使用你的网站通过邮件发送垃圾邮件反过来,这可能会使您的服务器被isps列为黑名单的垃圾邮件来源。只要从额外的标题字段(From:等)中删除\ n和\ r \ n,就应该是安全的。

另一个问题是您必须在电子邮件中添加自己的有效标题。

另一个问题是,每次调用mail()时,它都会连接和断开与smtp服务器的连接,尽管我认为有一种方法可以使用一次调用邮件发送多封电子邮件。这会很复杂,因为它可能涉及通过rfc282查看并找出如何去做。

答案 1 :(得分:0)

你需要使用一个SMTP服务器,之后使用任何php库连接到php。这里有一些有用的库和一些例子

答案 2 :(得分:0)

首先,您的域名需要有效的mx.record ... 如果你使用邮件功能,你应该发送这样的有效标题:

function send_mail($from = FALSE,$to = FALSE, $msg = FALSE, $subject = FALSE, $html= TRUE){
    if($from && $to && $msg && $subject){
        if ($html){
            $header  = 'MIME-Version: 1.0' . "\r\n";
            $header .= 'Content-type: text/html; charset=UTF-8' . "\r\n"; 
        }
            $header .= 'From: '.$from. "\r\n";          
            $header .= 'Reply-To: '.$from. "\r\n";
            $header .= 'X-Mailer: PHP/' . phpversion();
            return mail ($to,$subject,$msg,$header);
    }
    return "fail";
}