php.iniのSMTPの設定が効かない時

  • 22 May 2017

やむなくPHPにさわる機会がありまして、メール送信部分でSMTPの設定が効かないところでハマったのでメモします。

結論

結論からいうとphp.iniのSMTPの設定はWindowsのみの設定のため、Linuxサーバー上では効力を発揮しません。

同様にini_set('SMTP', [smtpサーバー名])ini_set('smtp_port', 25)もLinux上では意味がありません。

php.iniの該当行見ると一目瞭然なのですが、ini_setだけしか考えてないと見落としますね。

Linux上でmb_send_mailやsend_mailをsmtp経由で送るには?

php.iniをいじってこれを実現することはできません。Linuxにおいて、phpはメールを送るときに/usr/bin/sendmailを叩きに行きます。従ってこれをインターセプトするとなると、sendmailに代わるものを自前で実装する必要があります。

結局のところQdmail(Qdsmtp)などのライブラリやフレームワークのライブラリにに頼るのが無難そうです。

以上です。