読者です 読者をやめる 読者になる 読者になる

モノノフ日記

普通の日記です

メール配信用のプログラムを書いて失敗した点

8000人弱くらいの人数に一括メール配信したい、と言われてPHPでサクっとスクリプト書きました。
まぁ、1回きりだしPHP標準のメール関数を使えばいいやと考えて、mb_send_mailを使って書きました。10件くらいのテストデータで動作確認して問題無かったのでえいやっ、と本番データで実行したところ、基盤チームから
SMTPに1件ずつ送信されてて配信遅延してるかも」
とご指摘が。

ん?
bccヘッダにカンマ区切りでメアド連結したから一括で送れてない?と思いながらPHPマニュアルを確認。

注意: mail() 関数は、大量のメールをループ内で送信するには 向いていないことに注意しましょう。この関数は 1 通のメールを送信するたびに SMTP ソケットをいったん閉じて開きなおします。これは非効率的です。
大量のメールを送信する場合は、 » PEAR::Mail および » PEAR::Mail_Queue パッケージを参照ください。

http://jp.php.net/manual/ja/function.mail.php

・・・。

マニュアルちゃんと読んでなかったお
ごめんなさい                     |     | |     |
                               |     | |    |
            / ⌒`"⌒`ヽ、              |       | |    |
           /,, / ̄ ̄ ̄ ̄\            |     | |     |
          /,//::         \        |     | |    |
         ;/⌒'":::..            |⌒ヽ     | ,     | |    |
       /  /、:::::...           /ヽ_ \     |ノ    、| .|   、|
     __( ⌒ー-ィ⌒ヽ、   /⌒`ー'⌒  )    ノ_____,ゝソ___ゝ
    ━━━`ー──ゝィソノー‐ヾy_ノー─"   _ノ゙ ̄⌒^⌒} .{ ⌒^⌒}
                           'ニ===⊂⊃=} {=⊂⊃=} 

一括で大量のメールを送るときはQdMailPHPMailerPEAR::Mailのようなライブラリを活用した方が安心ということが身に染みました。