メンバーをループして、それぞれに個別にメールを送信するニュースレター スクリプトがあります。これは以前は正常に実行されていましたが、数が増えるにつれて、スクリプトが途中でクラッシュし始めました。私は SwiftMailer を使用していますが、「PHP のデフォルトの mail() として mail() を使用して送信に失敗しました」というメッセージが表示されます。ネイティブの mail() 関数の代わりに SMTP で送信しようとする利点はありますか? または、別の解決策を検討する必要があります。ご指摘ありがとうございます。
3 に答える
実際には、このmail()
関数はメールを配信しません。生成したメールをシステムの SMTP サーバーに渡すだけです。いずれにせよ、SMTP を使用することになります。
swiftmailer が PHP の mail() 関数を使用している場合は、システムの SMTP 設定に問題がある可能性があります。システム ログ (特にメールログ) を調べて手がかりを探し、Swiftmailer がより適切なエラー メッセージを表示するかどうかを確認します。
Swiftmail を開発し、おそらくこれらの問題に頭を悩ませた賢い男の提案によると(あなたと私が同じことをするのを避けるために)、mail
トランスポートではなく SMTP を使用することが役立つかもしれません。
私の経験 (および他の人の経験) では、mail() 関数は特に予測可能ではなく、役に立ちません。
特に、mail() 関数は、Linux サーバーと Windows サーバーの間でまったく異なる動作をします。Linux では sendmail を使用しますが、Windows では SMTP を使用します。...
このトランスポートを使用する場合の重大な欠点は次のとおりです。
- 予測できないメッセージ ヘッダー
- 配達の失敗に関するフィードバックの欠如
- リアルタイムの配信フィードバックを必要とするいくつかのプラグインのサポートの欠如
それは最後の手段であり、私たちは情熱を持ってそう言います!
さらに、同じページで、to フィールドを単純に繰り返すだけでニュースレターを処理する方法についても説明しています。
このmail()
関数は、SMTP でメールを送信します。ただし、次のようなものを試してみてくださいPEAR::Mail
。を使用mail()
すると、メッセージごとに新しい SMTP 接続が開かれますが、これはループ内で行うのはかなり非効率的です。これがエラーの原因である可能性は非常に高いですが、このような一般的なエラー メッセージでは、さらに掘り下げないと確認できません。