弊社でお客様のお問い合わせフォームをPHPで作成しているのですが、
お客様の環境でメールを送信することができません。
サーバー環境は以下の通りです。
Red Hat Linux 2.6.9
Apache/2.0.52
PHP 4.3.9
原因の調査で以下のようなチェックを行いました。
【お客様に御願いしたチェック】
1. サーバーでsendmailコマンドを利用してメールが送れるか?
送ることができる。
正しくキューイングされ、送信されることまで確認OK
2. php.iniのsendmail_pathの確認
sendmail_path は /usr/sbin/sendmail -i -tになっている。
/usr/sbin/sendmailはちゃんとある
3. mail()が使えないPHP
/usr/sbin/sendmail,/usr/lib/sendmailがなければmail()が使えないPHPがビルドされるケース。
標準のPHPを利用しているので、問題ない。
【弊社が担当したチェック】
1. メールを送信するPHPスクリプトの不具合
PHPスクリプト自体は正常に動作する。
php.iniのdispaly_errorsをONに変更してもエラーメッセージはでない。
2. 簡単なmail()関数を使用したチェック
以下のようなphpスクリプトで確認。
OKがブラウザに表示される。
<?php
if (mail("私のメールアドレス", "テスト", "テスト本文", "From:私のメールアドレス")) {
echo "OK";
} else {
echo "NG";
}
?>
何か原因があるのでしょうか?
どなたか教えてください。
No.1ベストアンサー
- 回答日時:
がると申します。
一つには、きちんとsendmailが処理できているのかを、/var/logあたりのログで確認されるとよろしいかと思うのですが。
mail関数の戻り値は「送れたかどうか」ではないので。戻り値チェックはちょっと微妙かもしれません。
もう一つ…ぶっちゃけPHPのmail関数は事故が多いので(苦笑
popen とかを使って、普通にsendmailプロセス立ち上げて…という関数なりclassなり切ってしまったほうが、多分早いです。
原因も追及しやすいですし。
以上あまり参考にはならないかもしれませんが、逃げ道の方法を書いてみました。
この回答への補足
php.iniのsafe_modeが「Off」の状態で、popen()を使用して、直接コマンドを実行してみました。
結果ですが、sendmailが正しく処理できていないようです。
1. /var/log/maillogにログが残らない
2. メールも送信されない
以下が実行したスクリプトになります。
<?php
$pid = popen("/usr/sbin/sendmail -f 私のメールアドレス 私のメールアドレス", "w");
fputs($pid, "From: 私のメールアドレス\n");
fputs($pid, "To: 私のメールアドレス\n");
fputs($pid, "Subject: test mail\n");
fputs($pid, "Content-Type: text/plain; charset=EUC-JP\n");
fputs($pid, "Content-Transfer-Encoding: 7bit\n");
fputs($pid, "\n");
fputs($pid, "テストメール\n");
fputs($pid, "bye.\n");
pclose($pid);
$>
PHPに問題があるのでしょうか?
回答ありがとうございます。
popen()ですね。
試してみます。
普段、PHPで開発することが多いのですが、今回のケースは初めてでしたので
いろいろ悩んでしまって困っていました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP php 完了画面の送信メールのコードを書いているのですが・・・ 2 2023/06/02 12:01
- CGI -T(汚染モード)でメールが送れません 1 2022/06/12 14:11
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- UNIX・Linux Ubuntuサーバーでメールを受信できない 7 2022/08/23 20:55
- サーバー 接続・ログインはできているのにメールが送信できない 2 2022/06/27 15:03
- JavaScript ラジオボタンによるフォームの開閉を行いたい 3 2022/03/31 21:30
- PHP PHP MySql ページング 2 2022/09/20 06:38
- PHP どうして送信されないのでしょうか? 1 2022/12/09 05:23
- AJAX JavascriptからPHPへのAjax通信でnullが返ってくる 3 2022/08/03 22:00
- PHP アップロード画像数でCSSを分けることに成功したのですが、画像の横に文字を並べることが出来ません。 3 2023/07/28 17:16
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
PHP、PEARでのメール送信での送...
-
ローカル環境でのメール送信
-
メールフォームのタイトルが文...
-
php 完了画面の送信メールのコ...
-
PHPからロリポップ!のメールサ...
-
mail関数を使った場合のReturn-...
-
さくらサーバーにて、phpからメ...
-
phpでmb_send_mailを用いてメー...
-
こちらはただの直列処理ですか?
-
フォントの色を変えるには?
-
onedrive にexcelファイルをア...
-
form actionで二つ送信先を指定...
-
シェルスクリプトからphpファイ...
-
FTPコマンドでディレクトリごと...
-
PHPのif文でその処理を途中で抜...
-
存在しないメールアドレスかど...
-
.htaccessにphp_valueが使用できな
-
PHP8を使うと、大量のWarningが...
-
PHPでfatal errorが出ても無視...
-
アップロード画像数でCSSを分け...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
php 完了画面の送信メールのコ...
-
さくらサーバーにて、phpからメ...
-
メールフォームのタイトルが文...
-
PHPsendmailにて送信元を変更
-
mb_send_mail関数が利用出来ない
-
PHPからロリポップ!のメールサ...
-
VBA 添付ファイルをつけてメー...
-
mailやmb_send_mail関数で、本...
-
sendmailでエラーがでます
-
PHPでの仮登録時の会員認証メー...
-
phpでメール送信できません 原...
-
mb_send_mail() 第 4、5 引数の...
-
PHPMailerのコードエラーが解決...
-
ローカル環境でのメール送信
-
PHPからメールを送る@さくらイ...
-
PHPでメールを送信するには
-
mb_send_mailについて
-
mail関数を使った場合のReturn-...
-
メールの本文をSmartyにしたい
-
サーバーによってはmb_send_mai...
おすすめ情報