我在循环发送电子邮件时遇到问题。详情如下:
我有一个名为email.csv的csv文件。我正在上传此文件并从此csv文件中读取电子邮件。我正在使用codeignitor框架。用于读取csv文件和发送电子邮件的代码,代码如下。
$file = $_FILES['email_from_file'][tmp_name];
$handle = fopen($file,"r");
if (($handle = fopen($file,"r")) !== FALSE) {
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
$num = count($data);
for ($c=0; $c < $num; $c++) {
$this->email->clear();
$this->email->set_mailtype("html");
$this->email->to(trim($data[$c]));
$this->email->from('admin@workerbee.com');
$this->email->subject($data['news_letter_info'][0]['subject']);
$this->email->message($data['news_letter_info'][0]['template_body']);
$this->email->send();
}
}
fclose($handle);
}
当我发送电子邮件时,需要花费太多时间来执行和发送电子邮件。而我的浏览器也变得悬而未决。那么有没有办法使用shell命令发送这些电子邮件,这将在后台执行php脚本。
提前感谢。
答案 0 :(得分:1)
使用此功能。
exec('php /<SERVER PATH>/send_bulkmail.php');
在你的send_bulkmail.php中使用代码来使用fread()或file_get_content()来读取文件,并像上面那样在lood中发送邮件。
答案 1 :(得分:0)
我将Cron作业用于此类任务。
检查crontab手册。 http://www.linuxmanpages.com/man5/crontab.5.php
EX。
*/5 * * * * php /u1/dev/cuser5/scripts/cli.php --action project/.../messages/send-email.php
这意味着。每天每5分钟运行一次send-email文件。
注意:如果您需要发送许多电子邮件,那么您应该以较小的组发送电子邮件。