[PHP-users 35134] Re: phpのmail関数がたまにfalseを返す

choice info @ choice-site.com
2010年 4月 21日 (水) 17:10:41 JST


中出です。

レス、ありがとうございます。

> >while文で5000件程度のメルアドにmail関数で
> >メールを送信する処理を行っているのですが、
> 
> 
> 質問1:
> >2,3件のメルアドでfalseとなってしまいます。
> これは5000件のなかの最初の2,3件でとまるということでしょうか?
> それとも、10件とか20件の少ない件数で
> 同じロジックの実行テストをしても結果は同じということでしょうか?
> 
> 

件数が少ない場合は、この現象は発生しません。
5000件程度の配信をすると5000件のうち、数件で
mail関数がfalseを返します。(処理は止まりません)
なお、必ず「最初の数回」とか「3件目と4件目」ということでなく、
ランダムに数回発生します。


> まず、以下をもう一度よく読んでみてください。
> http://php.net/manual/ja/function.mail.php
> このマニュアルの「例」の下に「注意」が書かれています。
> 
> --------- 以下引用 ---------------
> 注意: mail() 関数は、大量のメールをループ内で送信するには
> 向いていないことに注意しましょう。
> この関数は 1 通のメールを送信するたびに
> SMTP ソケットをいったん閉じて開きなおします。これは非効率的です。 
> --------- 以下終わり ---------------
> 
> この注意は、mail()関数を使用していても、
> mb_send_mail()関数を使用していても同様のことが言えます。
> 
> 

はい、知っています。
ただ、非効率ということであって、不可能ということで
はないと理解してます。

もしかして、mail関数がエラーを返したのは、
「SMTPソケットを開けなかった」ということなんでしょうか?
そうれであれば、sendmailにわたらなかったので
sendmailのログにも記載されなかったという理由が
納得できます。
ただ、phpのエラーログに記録されなかったのは
不明ですが。

で、これが原因だとすると、
この現象を回避する方法はどんなことが
考えられるのでしょうか?

以上、よろしくお願いします。
では、失礼します。

----



PHP-users メーリングリストの案内