【问题标题】:mass mailing with php使用 php 群发邮件
【发布时间】:2019-02-04 10:05:08
【问题描述】:

我有一个包含超过 2000 个联系人的数据库,我想使用群发邮件,但我不知道该怎么做,我使用了此代码但我认为它没有用,因为邮件数量很重要,并且mail() 不能用于群发邮件。

<?php

require ("bdd.php");

$sql = "SELECT adresse FROM newsletter WHERE envoie='1';";
$result = mysql_query($sql);

while($row = mysql_fetch_array($result))
{
     $en_tete ='From: '. $row['adresse'] .''."\n";
     $en_tete .='Reply-To: adresse@fai.fr'."\n";
     $en_tete .='Content-Type: text/html; charset="iso-8859-1"'."\n";
     $en_tete .='Content-Transfer-Encoding: 8bit';
     $contenu ='<html><head><title>Envoie html</title></head><body><p>TEST !</p></body></html>';

     mail($row['adresse'], 'Envoie mail', $contenu,  $en_tete)
}

mysql_close();

?>

【问题讨论】:

  • 一方面,你有一个解析错误,可能是这一切的根源。
  • 你遇到了什么错误?
  • 你为什么要关闭你的连接然后再重新打开它?没必要。
  • 我在问是否有任何其他解决方案可以代替 mail() 可以毫无问题地发送超过 2000 封邮件
  • 如果传递性很重要,您不应该尝试使用内部邮件功能(因为您的邮件在传输过程中或到达目标服务器时更有可能被视为垃圾邮件)。使用受信任的电子邮件传递平台,例如 Mailgun。它是免费的,每月数量很少,而且很容易实施

标签: php mail-sender massmail


【解决方案1】:

您可以使用PHPMAILER

我不知道下面的解决方案是否对您有用.. 但我只是建议另一种想法来发送大量电子邮件,而不会出现任何问题,例如垃圾邮件或托管服务提供商每小时的电子邮件限制等.....

========

此外,您可以在发送电子邮件时将查询与限制和更新数据库列一起使用...

例如

在您的数据库表中添加额外的列 'email_sent'...

并将查询更改为

$sql = "SELECT adresse FROM newsletter WHERE envoie='1' and email_sent='0' order by id desc limit 25"; 
 // Limit can be any...10 or 25 or 50 etc... this will limit total emails at a time...


//in while clause, add query to Update database >> `email_sent`=>1...

使用 cronjob,您可以再次将 email_sent 重置为 0.. 或使用包含查询的简单链接将 email_sent 重置/更新为 0 以用于所有 2000+ 行。 .

请避免使用 mysql……不如尝试使用 mysqli 或 PDO..

【讨论】:

    猜你喜欢
    • 2012-10-06
    • 2016-06-05
    • 1970-01-01
    • 1970-01-01
    • 2010-11-20
    • 2012-10-19
    • 1970-01-01
    • 2018-06-22
    • 1970-01-01
    相关资源
    最近更新 更多