質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

87.93%

【PHP】mb_send_mailでTRUEなのにメールが送れない

受付中

回答 3

投稿

  • 評価
  • クリップ 0
  • VIEW 10K+

score 1873

 質問概要

自宅サーバ(MacOSX El Capitan)で、PHPのmb_send_mailの戻り値がtrueなのに、メールが送られてこない。

 環境

・Server version: Apache/2.4.18 (Unix)
・Server built:   Feb 20 2016 20:03:19
PHP 5.5.34 (cli) (built: Apr 22 2016 19:16:58)

 質問詳細

自宅サーバ(MacOSX El Capitan)で、PHPのmb_send_mailの戻り値がtrueなのに、メールが送られてきません。
迷惑メールのフォルダも確認済みです。

ヴァーチャルホストを使って、2つサイトを置いており、片方のサイトでverifyメールを送りたいと考えています。

php.iniは/etc/php.ini.defaultをcpして、/etc/php.iniに改名。
その後、sudo chmod 644 php.iniにし、
Let's Encryptを使っているので、
sendmail_path = "/usr/sbin/sendmail -t -i"
と設定しています。(ほかはデフォルト設定)

問題のコードは、以下のとおりです。
一部抜粋です。

// メール送信
    $to      = $address;
    $subject = 'タイトル';
    $headers = 'From: example@example.com' . "\r\n";

    $message = '本文と、';
    $message .= '認証コード:'.$rand."\r\n";

    $retrun = mb_send_mail($to, $subject, $message, $headers, '-f example@example.com');
    if ( $retrun === false ){
        echo '{"verify": "error"}';
        exit();
    }

    if ( $retrun === true ){
        $retrun = "TRUE";
    }else{
        $retrun = "FALSE";
    }
    echo '{"verify": "'. $rand .'", "return": "'. $retrun .'"}';

また、ヴァーチャルホストのディレクションで、エラーログ出力先ファイルを
ErrorLog "/private/var/log/apache2/local.howtohp.com-error_log"
としているので、

tail -f ErrorLog "/private/var/log/apache2/local.howtohp.com-error_log"(情弱…?)
とすると、

[Thu Aug 25 20:17:28.057764 2016] [:error] [pid 55186] [client 89.248.174.4:48890] script '/Users/USERNAME/Sites/xmlrpc.php' not found or unable to stat
[Thu Aug 25 22:41:07.368561 2016] [:error] [pid 55179] [client 113.67.186.66:57382] script '/Users/USERNAME/eroge/xmlrpc.php' not found or unable to stat
[Thu Aug 25 22:41:07.474711 2016] [:error] [pid 55179] [client 113.67.186.66:57382] script '/Users/USERNAME/eroge/wp-login.php' not found or unable to stat
[Sat Aug 27 06:23:17.803488 2016] [:error] [pid 56968] [client 179.99.200.39:51100] script '/Users/USERNAME/Sites/ip_json.php' not found or unable to stat
[Sun Aug 28 12:51:31.745579 2016] [core:error] [pid 57144] [client 186.250.221.30:57396] AH00126: Invalid URI in request GET HTTP/1.1 HTTP/1.1
[Mon Aug 29 16:08:34.928772 2016] [:error] [pid 56971] [client 201.175.94.3:35874] script '/Users/USERNAME/Sites/command.php' not found or unable to stat
[Wed Aug 31 05:47:43.697010 2016] [core:error] [pid 56976] [client 64.72.96.150:22846] AH00126: Invalid URI in request GET HTTP/1.1 HTTP/1.1
[Fri Sep 02 10:58:46.609364 2016] [:error] [pid 56972] [client 189.219.249.141:1195] script '/Users/USERNAME/Sites/command.php' not found or unable to stat
[Wed Sep 07 00:31:11.191406 2016] [:error] [pid 56972] [client 201.172.179.111:2214] script '/Users/USERNAME/Sites/command.php' not found or unable to stat
[Sat Sep 10 18:41:40.393126 2016] [:error] [pid 62249] [client 189.218.51.220:51591] script '/Users/USERNAME/Sites/command.php' not found or unable to stat

と、sendmail系のエラーは出ていません。
(command.phpってなんだ……こんなの知らんぞ……)

何が間違っているかご存じの方がいらっしゃいましたら、ご教示ください。
追加で設定が必要なのでしょうか……そちらの場合もお願い致します。
よろしくお願いいたします。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 3

+3

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

sendmailのエラーログを見てみては?

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

Mac OS X El Capitan ということは、Postfix が、インストールされていますので、Postfix の sendmail コマンドを使われているとおもいます。

Sendmail コマンドで、外部へメールを送信するためには、postfix の設定をして、サーバーとして起動されているでしょうか?

ps コマンドなどで、postfix が、サーバーとして起動しているか確認してみましょう。

また、インターネットへの接続が、OB25 などで制限されている場合は、relay_host や smtp auth の設定も必要な場合があります。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 87.93%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る