ニュースレターを送信したいメーリングリストが増えています。現時点では、1日あたり約1200通を送信していますが、これはかなり増加します。私はキューから電子メールを送信するために30分ごとに実行されるPHPスクリプトを作成しました。問題は、それが非常に遅いことです(例えば、106の電子メールを送信するには、合計74.37秒かかります)。私は最大実行時間を90秒に増やす必要がありました。私は質問が間違っていないことを確認しました、そして、それは特に長い時間がかかっている送信メール部分のようです。PHP PEARメールとALT-N Mdaemonプロで大量メールを送信する
私はMail :: factory( 'mail'、$ params)を使用しています。電子メールサーバは別のサーバでホストされているWindows用のALT-N Mdaemon proです。また、テストを行っているうちに、HotmailやYahooのアドレスには配信されていないことがわかりました。
これはなぜ起こっているのでしょうか?
foreach($leads as $k=>$lead){
$t1->start();
$job_data = $jobObj->get(array('id'=>$lead['job_id']));
$email = $emailObj->get($job_data['email_id']);
$message = new Mail_mime();
//$html = file_get_contents("1032.html");
//$message->setTXTBody($text);
$recipient_name = $lead['fname'] . ' ' . $lead['lname'];
if ($debug){
$email_address = DEBUG_EXPORT_EMAIL;
} else {
$email_address = $lead['email'];
}
// Get from job
$to = "$recipient_name <$email_address>";
//echo $to . " $email_address ".$lead['email']."<br>";
$message->setHTMLBody($email['content']);
$options = array();
$options['head_encoding'] = 'quoted-printable';
$options['text_encoding'] = 'quoted-printable';
$options['html_encoding'] = 'base64';
$options['html_charset'] = 'utf-8';
$options['text_charset'] = 'utf-8';
$body = $message->get($options);
// Get from email table
$extraheaders = array(
"From" => "Sender <[email protected]>",
"Subject" => $email['subject']
);
$headers = $message->headers($extraheaders);
$params = array();
$params["host"] = "mail.domain.com";
$params["port"] = 25;
$params["auth"] = false;
$params["timeout"] = null;
$params["debug"] = true;
$smtp = Mail::factory('mail', $params);
$mail = $smtp->send($to, $headers, $body);
if (PEAR::isError($mail)) {
$logObj->insert(array(
'type' => 'process_email',
'message' => 'PEAR Error: '.$mail->getMessage()
));
$failed++;
} else {
$successful++;
if (DEBUG) echo("<!-- Message successfully sent! -->");
// Delete from queue
$deleted = $queueObj->deleteById($lead['eq_id']);
if ($deleted){
// Add to history
$history_res = $ehObj->create(array(
'lead_id' => $lead['lead_id'],
'job_id' => $lead['job_id']
)
);
if (!$history_res){
$logObj->insert(array(
'type' => 'process_email',
'message' => 'Error: add to history failed'
));
}
} else {
$logObj->insert(array(
'type' => 'process_email',
'message' => 'Delete from queue failed'
));
}
}
$t1->stop();
}
これで問題は解決しませんが、私はあなたのメールを管理するメーリングリスト会社を雇うことを検討します。自分で大量メールを送信し始めると、間違いを犯すことになります。あなたのユーザーが悪いサービスを受ける最善のケース、最悪の場合、あなたのIPはメールプロバイダによってブラックリストに載せられます。 – Stephen
大量メール配信を専門とする企業は、自社のソリューションよりもはるかに効率的かつ効果的です。これにより、コア製品や資産の作業にも時間を費やすことができます。 – Stephen
オプションになります。電子メールを管理しキューに入れるシステムを既に持っているので、外部に電子メールを送ることを検討しているだけです。あなたが推奨するサービスはどれですか?私はブラスターを送って見ましたが、私たちが既に持っているシステムの代わりになるようです。 – Greg