ホームページ >バックエンド開発 >PHPチュートリアル >PHP がメール関数を使用してメールを送信できない理由
[はじめに]PHP では、メール関数 mail() を使用できるようにするために、メール システムがインストールされ実行されている必要があります。使用するメール システム プログラムは php.ini ファイルで設定されます。
次のコードを使用してメールを送信しますが、配信は常に失敗します。
[php] plaincopyprint?
01.02.$to = "xxxxxxxx@qq.com";
03.$subject = "テストメール";
04.$message = "こんにちは!これは単純な電子メール メッセージです。";
05.mail($to,$subject,$message);
06.?>
確認後、メール関数 mail を使用するには、PHP でメール システムがインストールされ実行されている必要があります。 () 利用可能です。使用するメール システム プログラムは php.ini ファイルに設定されます。具体的な解決策は次のとおりです:
1. sendmail をインストールします
sudo apt-get install sendmail
sudo apt-get install sendmail-cf
sudo apt-get install mailutils
2. sendmail を設定します
/etc/mail/sendmail.mc を開きます。次の行を見つけます:
DAEMON_OPTIONS('Family=inet, Name=MTA-v4, Port=smtp, Addr=127.0.0.1')dnl
Change 127.0.0.1 to 0.0.0.0
次のコマンドを実行して、古い設定ファイルを生成し、新しい設定ファイルを生成します:
cd /etc/mail
mv sendmail.cf~
m4 sendmail.mc > sendmail.cf
3. これはテストメールです。 -s "test "xxxxxxxx@qq.com
注意: このメールは迷惑メールとして受信されます。また、163 メールボックスを使用している場合は、直接フィルタリングされ、受信できない可能性があります。
4. php.ini ファイルを設定します
/etc/php5/apache2/php.ini を開き、次の行を見つけます:
; sendmail_path =
この行を次のように変更します。 「-t」パラメータは必須であることに注意してください。これがないと、元の php ファイルがブラウザから実行される場合、mail() 関数は実行されません。 phpコマンドラインを使用してサーバー上で直接実行しても問題ありません。
sudo /etc/init.d/apache2 restart
このとき、元のphpコードを再度実行すると、メールが正常に送信されます。
上記では、PHP でメール機能を使用してメールを送信できない理由を、関連する内容も含めて紹介しました。PHP チュートリアルに興味のある友人の参考になれば幸いです。