大家好我正在使用php邮件功能来发送我的邮件如果我在本地运行5个电子邮件ID的代码然后它工作正常没有任何错误但如果我运行相同的代码超过400电子邮件ID然后它显示警告消息链接
Warning: mail() [function.mail]: Could not execute mail delivery program '/usr/sbin/sendmail -t -i' in /home/sendInvite.php on line 147
我正在使用此代码:
$sqlquery1 = "select employee from empl where sstatus != 'C'";
$sqlmath1 = mysql_query($sqlquery1) or die("Error: (" . mysql_errno() . ") " . mysql_error());
$cnt = mysql_num_rows($sqlmath1);
if($cnt !="0") {
while($query1 = mysql_fetch_array($sqlmath1))
{
$email1=$query1['employee'];
$emid1=base64_encode($email1);
$sid1 =base64_encode($sidtest);
$email_from1 = "admin@gmail.com";
$link1="http://www.xx.php?mid=$emid1&sid=$sid1";
//send mail
$emailto_web1 = $email1;
$email_headers1 = "From: ".$email_from1;
num_sent_web1 = 0;
$email_message21 = "Dear Employee, \n";
$email_message21 .= "\n";
$email_message21 .= "If you cannot click on the URL, copy the URL and paste it on your address bar.\n";
$email_message21 .= "\n";
$email_message21 .= $link1."\n";
$email_message21 .= "\n\n\n";
$email_message21 .= "Regards,\n";
$email_message21 .= "Admin Team. \n";
$mail_web1 = mail($emailto_web1,$email_subject1,$email_message21,$email_headers1);
if($mail_web1)
{ $err = "Remainder Send Successfully";
}
else
{ $err=$email." Try Again";
}
}
} // not equal to zero condition
我不知道收到此警告消息的确切原因,请发布您的重要建议。提前致谢 !!!
答案 0 :(得分:3)
为此使用cron作业并以块的形式发送邮件,而不是一次发送所有邮件。
答案 1 :(得分:0)
请参阅php邮件功能文档:
值得注意的是,mail()函数不适合循环中的大量电子邮件。此功能为每封电子邮件打开和关闭SMTP套接字,效率不高。 要发送大量电子邮件,请参阅»PEAR :: Mail和»PEAR :: Mail_Queue包。
另外,请参阅serverfault上的相关问题:https://serverfault.com/questions/67154/sending-an-email-to-about-10k-users-not-spam,其中提到了PHPlist,以及其他问题。在这里 - https://serverfault.com/questions/68357/whats-the-best-way-to-send-bulk-email,https://stackoverflow.com/questions/1543153/is-there-a-limit-when-using-php-mail-function
答案 2 :(得分:0)
我认为您的脚本没有问题,但是操作系统或发送邮件程序的安装问题很难配置或者可能丢失。尝试所有可能性,从PHP方面它没关系。
答案 3 :(得分:0)
您最好的选择是使用cron作业。这样做,你的服务器会有很大的压力。 mail()函数不适用于大量电子邮件。如果您使用大量数据,它将减慢您的服务器。
This将解释如何在服务器上创建一个cron作业。
希望它有所帮助!