PHPメール送信エラー No recipient addresses found in message header
古くなったサーバー、およびシステムの改修業務を、最近やることが多いです。
私に何なりとお任せください!
いかにトラブルが無くサーバーを移行させるかが、自分なりのこだわりとして大事にしています。
内容的には、5年、8年程度稼働しているサーバーを入れ替えることなども多いです。
その頃は、複数台のサーバー構成でしたが、今ではクラウドやVPSなどを使ってより柔軟に、または小規模構成に仕様を変更したりします。
料金体系も過去と比べて、今の方が格段に維持費を抑えることができると思います。
いや、確実に安くなりますね。
さて、今回経験したトラブルとして
移行テストの時に
PHPスクリプト内からメール送信すると、「No recipient addresses found in message header」エラーが発生してしまい、メールが届かない現象が起こっているようです。
(メールのログファイルを見れば確認できます)
システムとして、会員登録時の空メール受信機能のアレです。
空メールを受けて、仮登録処理を行い、本登録用の手続きメールを送信する箇所に問題がありました。
原因はPHPのバージョンアップ(PHP5.4)に合わせて、php.iniのマスターから新規作成した際に、設定項目が変わっていたことでした。
大分古いまま利用していたのですね(^_^;)
このクライアント様には、弊社のサポート保守を説明させていただきました。
PHPの5.3から、デフォルトで$_ENV変数が取得できなくなっています。
variables_order = “GPCS”
過去の仕様に合わせてvariables_orderに、Eを追加し variables_order = “EGPCS” にて対応するのか?
セキュリティ的な事をふまえ、$_ENV から getenv() に、PHPスクリプトコードを書き換えするのか?
クライアント様に解決方法をご提案して対応をすすめてまいります。
個人的には、php.iniをvariables_order = “EGPCS”に書き換えて対応するほうが良いと思っています(^_^;)
意図しない $_ENV 情報が外部に公開されるリスクも低いことと、システム規模にもよりますが、全てのスクリプトでgetenv()に書き換えた際のテストを含めた工数が合いそうにないからです。
決して手抜きしているわけでは無いのですよm(__)m