4

batchEmail が新しい SwiftMailer の一部ではなくなったことに気付きました。だから私はこのスクリプトを作りました:

<?
//
// GC PRESS EMAILER v5
//
ini_set('display_errors',1);
error_reporting(E_ALL);
require_once("config.php");
include_once("hawkmail/mail/lib/swift_required.php");
$c=mysql_connect($dbh,$dbu,$dbp);
function SendEmail(){
    // DB
    $s=mysql_query("SELECT * FROM `newgc`.`press_list`");
    // Process Color Listing Loop
    while($r=mysql_fetch_array($s)){
    // ###########################
    // START LOOP
    // ###########################
        $name=$r['name'];
        $email=$r['email'];
        $to=array(''.$email.''=>''.$name.'');
        include("hawkmail/templates/press.php");
        # Email subject
        $str=$name;
        $str=substr($str, 0, strrpos($str, ' '));
        $subject='Dear '.$str.', you are invited to our Exclusive Party Collection Press Day!';
        # send message
        include("hawkmail/settings.php");       
    }
    // ###########################
    // END LOOP
    // ###########################
}
SendEmail();
?>

データベースには 200 のレコードがあります。スクリプトを実行したところ、数通のメールが送信された後、タイムアウトになりました

504ゲートウェイのタイムアウト

nameemailレコードは似ています

ジョン・スミス John.smith@site.com

とてもわかりやすい。そして、私hawkmail/settings.phpはこれです:

# mail
$smpturl="smtp.sendgrid.net";
$mailu="sitesitesite";
$mailp="sitessssssssssss";
$from=array("no-reply@site.com"=>"site.com");

# login credentials & setup Swift mailer parameters
$transport=Swift_SmtpTransport::newInstance($smpturl, 587);
$transport->setUsername($mailu);
$transport->setPassword($mailp);
$swift=Swift_Mailer::newInstance($transport);

# create a message (subject)
$message=new Swift_Message($subject);

# attach the body of the email
$message->setFrom($from);
$message->setBody($html, 'text/html');

$message->setTo($to);
$message->addPart($text, 'text/plain');

# actually send the message
if($recipients=$swift->send($message, $failures)){}else{}

PHPタイムアウトの制限を増やす方法はありますか(私はUbuntuとNginxを使用しています)、またはBatchMail()に代わるものはありますか?なぜそれが削除されたのか本当にわかりません.

新しい swiftmailer を使用したバッチ メール スクリプトの例を投稿できますか?

4

1 に答える 1

4

電子メールの送信は、オンラインで行う最も複雑なことです。

これは、2 番目によく使用され、最も悪用されているサービスです。

大量のメールを送信するための独自のカスタム メール プラットフォームを構築しました。

発生するタイムアウトは、Apache と PHP の実行制限によるものです。

CLI アプリケーションとして実行する必要があります。set_time_limit (0);

php /path/to/app/script.phpこのようなものをコンソールに直接表示します。

SSH アクセスがない場合は、次shell_execのように実行します。

shell_exec("php /path/to/app/script.php > /dev/null 2>/dev/null &");

これにより、それを呼び出すスクリプトが終了するまでハングアップしないことが保証されます。

于 2012-09-01T18:34:28.380 に答える