PHPのmail()を使用してメールを送信できないようです。PHPMailerとSwiftmailも試しましたが、成功しませんでした。ただし、サーバー上の次のコマンドはメールを正常に配信します。
cat test.txt | mail -s "test mail" my@email.com
問題がどこから来ているのかを追跡する方法はありますか?mail()はtrueまたはfalseを返すようです。
PHP> = 5.2ではerror_get_last()
、最後の関数呼び出しによって返されたエラーを取得する必要があります。リンク先のページに、古いバージョンのPHPから同等の情報を取得する方法の詳細があります。
PHPMailerに関して$mailer->ErrorInfo
は、最後に発生したエラーを含むプロパティがあります。SwiftMailerには同様のものが必要です。ほとんどの場合、メールがコマンドラインから機能しているが、PHPまたはメーリングライブラリ内からは機能していない場合は、設定に誤りがあります。あなたのホストにはPHPのsendmail_path
iniパラメータが設定されていないと思います。
error_reporting(E_ALL)を使用して、すべてのエラー、警告、および通知を有効にします。エラーをどこか有用な場所に移動させるか、いくつかの有用なことを行うコールバックを登録します。
次に、何が起こっているかがわかります。PHPのエラー処理はデフォルトでは役に立ちません(デフォルトはどこでも異なるため、実際にはオーバーライドする必要があります)。
おそらく、MTAがリレーを許可していないローカルホストに対してSMTPを実行するように構成されています。代わりにsendmailを使用するように構成を変更するか、ローカルホストからのリレーを許可するようにMTAを修正します。