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

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

新規登録して質問してみよう
ただいま回答率
85.37%
Sendmail

Sendmailは、インターネットで電子メールを送受信するサーバソフトウェア(MTA)です。ユーザーが送信したメールを受け、他メールサーバへ引き渡しバケツリレー式に配送したり、届いたメールをユーザーが受け取るまでの間保管するといった働きをします。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

3回答

14091閲覧

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

nnahito

総合スコア2006

Sendmail

Sendmailは、インターネットで電子メールを送受信するサーバソフトウェア(MTA)です。ユーザーが送信したメールを受け、他メールサーバへ引き渡しバケツリレー式に配送したり、届いたメールをユーザーが受け取るまでの間保管するといった働きをします。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2016/09/11 18:28

質問概要

自宅サーバ(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"
と設定しています。(ほかはデフォルト設定)

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

lang

1// メール送信 2 $to = $address; 3 $subject = 'タイトル'; 4 $headers = 'From: example@example.com' . "\r\n"; 5 6 $message = '本文と、'; 7 $message .= '認証コード:'.$rand."\r\n"; 8 9 $retrun = mb_send_mail($to, $subject, $message, $headers, '-f example@example.com'); 10 if ( $retrun === false ){ 11 echo '{"verify": "error"}'; 12 exit(); 13 } 14 15 if ( $retrun === true ){ 16 $retrun = "TRUE"; 17 }else{ 18 $retrun = "FALSE"; 19 } 20 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"(情弱…?)
とすると、

error

1[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 2[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 3[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 4[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 5[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 6[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 7[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 8[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 9[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 10[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ってなんだ……こんなの知らんぞ……)

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

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

投稿2016/09/11 18:41

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

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

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

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

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

投稿2016/09/12 05:32

CHERRY

総合スコア25216

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

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

投稿2016/09/12 01:19

FKM

総合スコア3647

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.37%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問