コメント欄のメール通知が送られない

2017年3月27日 at 19:12

コメント欄ブロックにコメントがあった場合の通知を設定しているのですが、
通知のメールが送信されず、ログにはUnknown errorが出てしまいます。
手がかりがUnknown errorしかないため、フォーラムの他の件を見ても解決できませんでした

環境は以下です
・さくらレンタルサーバー ビジネス
・concrete5 ver8
・PHP 5.6.30
・mySQL 5.5

php.iniの内容は、下記の手順通りに設定しています。
http://concrete5-japan.org/help/5-6/install/hosting/sakura/#php-config

レポートのログは以下になります。
ここから===========================================

メールの例外が発生しました。メールが送信できません:Unable to send mail: Unknown error
#0 [internal function]: Zend\Mail\Transport\Sendmail->mailHandler('xxxxxxxx@gmai...', '=?UTF-8?Q??=\n =...', 'admin \xE3\x81\x8C\xE3\x82\xB3\xE3\x83\xA1...', 'Date: Mon, 27 M...', ' -fconcrete5-no...')
#1 /home/dir/www/concrete/vendor/zendframework/zend-mail/src/Transport/Sendmail.php(138): call_user_func(Array, 'sevenbites@gmai...', '=?UTF-8?Q??=\n =...', 'admin \xE3\x81\x8C\xE3\x82\xB3\xE3\x83\xA1...', 'Date: Mon, 27 M...', ' -fconcrete5-no...')
#2 /home/dir/www/concrete/src/Mail/Service.php(502): Zend\Mail\Transport\Sendmail->send(Object(Zend\Mail\Message))
#3 /home/dir/www/concrete/src/Conversation/Message/Message.php(567): Concrete\Core\Mail\Service->sendMail()
#4 /home/dir/www/concrete/tools/conversations/add_message.php(103): Concrete\Core\Conversation\Message\Message::add(Object(Concrete\Core\Conversation\Conversation), Object(Concrete\Core\Conversation\Message\Author), NULL, '\xE8\xB3\xAA\xE5\x95\x8F\xE3\x81\xAE\xE3\x81\xA6st2...', NULL)
#5 /home/dir/www/concrete/src/View/View.php(207): include('/home/dir/www/...')
#6 /home/dir/www/concrete/src/View/AbstractView.php(151): Concrete\Core\View\View->renderViewContents(Array)
#7 /home/dir/www/concrete/src/Routing/ControllerRouteCallback.php(41): Concrete\Core\View\AbstractView->render()
#8 /home/dir/www/concrete/src/Routing/Router.php(149): Concrete\Core\Routing\ControllerRouteCallback->execute(Object(Concrete\Core\Http\Request), Object(Concrete\Core\Routing\Route), Array)
#9 /home/dir/www/concrete/src/Http/DefaultDispatcher.php(112): Concrete\Core\Routing\Router->execute(Object(Concrete\Core\Routing\Route), Array)
#10 /home/dir/www/concrete/src/Http/DefaultDispatcher.php(53): Concrete\Core\Http\DefaultDispatcher->handleDispatch(Object(Concrete\Core\Http\Request))
#11 /home/dir/www/concrete/src/Http/Middleware/DispatcherDelegate.php(39): Concrete\Core\Http\DefaultDispatcher->dispatch(Object(Concrete\Core\Http\Request))
#12 /home/dir/www/concrete/src/Http/Middleware/FrameOptionsMiddleware.php(39): Concrete\Core\Http\Middleware\DispatcherDelegate->next(Object(Concrete\Core\Http\Request))
#13 /home/dir/www/concrete/src/Http/Middleware/MiddlewareDelegate.php(38): Concrete\Core\Http\Middleware\FrameOptionsMiddleware->process(Object(Concrete\Core\Http\Request), Object(Concrete\Core\Http\Middleware\DispatcherDelegate))
#14 /home/dir/www/concrete/src/Http/Middleware/CookieMiddleware.php(37): Concrete\Core\Http\Middleware\MiddlewareDelegate->next(Object(Concrete\Core\Http\Request))
#15 /home/dir/www/concrete/src/Http/Middleware/MiddlewareDelegate.php(38): Concrete\Core\Http\Middleware\CookieMiddleware->process(Object(Concrete\Core\Http\Request), Object(Concrete\Core\Http\Middleware\MiddlewareDelegate))
#16 /home/dir/www/concrete/src/Http/Middleware/ApplicationMiddleware.php(29): Concrete\Core\Http\Middleware\MiddlewareDelegate->next(Object(Concrete\Core\Http\Request))
#17 /home/dir/www/concrete/src/Http/Middleware/MiddlewareDelegate.php(38): Concrete\Core\Http\Middleware\ApplicationMiddleware->process(Object(Concrete\Core\Http\Request), Object(Concrete\Core\Http\Middleware\MiddlewareDelegate))
#18 /home/dir/www/concrete/src/Http/Middleware/MiddlewareStack.php(86): Concrete\Core\Http\Middleware\MiddlewareDelegate->next(Object(Concrete\Core\Http\Request))
#19 /home/dir/www/concrete/src/Http/DefaultServer.php(85): Concrete\Core\Http\Middleware\MiddlewareStack->process(Object(Concrete\Core\Http\Request))
#20 /home/dir/www/concrete/src/Foundation/Runtime/Run/DefaultRunner.php(101): Concrete\Core\Http\DefaultServer->handleRequest(Object(Concrete\Core\Http\Request))
#21 /home/dir/www/concrete/src/Foundation/Runtime/DefaultRuntime.php(102): Concrete\Core\Foundation\Runtime\Run\DefaultRunner->run()
#22 /home/dir/www/concrete/dispatcher.php(39): Concrete\Core\Foundation\Runtime\DefaultRuntime->run()
#23 /home/dir/www/index.php(3): require('/home/dir/www/...')
#24 {main}
使用テンプレート: new_conversation_message
コピー先: xxxxxxxx@gmail.com
開始: concrete5-noreply@concrete5
Reply-To:
件名: コメント欄に新着メッセージがあります: 質問などはこちら
本文:
admin がコメント欄 "質問などはこちら" に新しいメッセージを投稿しました:

質問2

コメント欄全体はこちらで確認できます

http://domain/manual/qestion
ここまで===========================================


また、管理画面での、「メール送信テスト」でも、
「テストメール送信中に次のエラーが発生しました:Unable to send mail: Unknown error」と、同じエラーが表示されます(こちらはログには出力されませんでした)


なお、別のサーバー(さくらのVPS php5.6.16 mysqlnd 5.0.11)では問題なく通知のメールが送信できています。

どなたかお知恵を貸していただければ幸いです。どうぞよろしくお願いいたします

タグ: コメントブロック, エラー

Re: コメント欄のメール通知が送られない

2017年3月27日 at 19:17
ありがとうございます。

普通のフォームブロックの通知は送ることができますか?
それも送ることが出来ませんか?
 

Re: Re: コメント欄のメール通知が送られない

2017年3月27日 at 19:24
ありがとうございます

フォームブロックの通知は送信できました

ログは以下です
ここから================================
**メール機能は有効。このメールはmail()もしくはmb_send_mail()に送られました。**
使用テンプレート: block_express_form_submission
メール詳細: Date: Mon, 27 Mar 2017 19:19:17 +0900
Reply-To: concrete@domain
From: concrete@domain
Subject: =?UTF-8?Q??=
=?UTF-8?Q?=E3=82=A6=E3=82=A7=E3=83=96=E3=82=B5=E3=82=A4=E3=83=88=E3=83=95=E3=82=A9=E3=83=BC=E3=83=A0=E6=8A=95=E7=A8=BF=20?=
=?UTF-8?Q?=E2=80=93=20=E8=B3=AA=E5=95=8F=E3=81=AA=E3=81=A9=E3=81=AF=E3=81=93=E3=81=A1=E3=82=89?=
To: xxxxxxxxxx@gmail.com
Message-ID:
MIME-Version: 1.0
Content-Type: text/plain;
charset="UTF-8"
Content-Transfer-Encoding: 8bit
Sender:

あなたの concrete5 サイトのフォーム 質問などはこちら から送信されました。

質問input:
フォーム送信のテスト

このフォームからの送信をすべて確認する:http://domain/index.php/dashboard/reports/forms/view/472
ここまで================================


インストールされているモジュールが足りないのが原因と思っていたのですが、フォームで送信できるのであれば、別の原因ですよね

どうぞよろしくお願いいたします
 

Re: コメント欄のメール通知が送られない

2017年3月27日 at 19:49
ありがとうございます!

では、コメント欄のバグっぽいですね・・・。

時間を作って見てみたい・・・
他の人も、検証ヘルプ!!
 

Re: コメント欄のメール通知が送られない

2017年3月27日 at 20:27
バグですかね…

別のサーバーだと動くので、サーバー側の問題とは思っています
モジュールのせいかなとも思っているので、モジュールについても記載しておきます。

■メール通知ができないサーバー
# PHP Extensions
cgi-fcgi, Core, ctype, curl, date, dom, ereg, exif, fileinfo, filter, gd, gettext, gmp, hash, iconv, json, libxml, mbstring, mcrypt, mysql, mysqli, mysqlnd, openssl, pcre, PDO, pdo_mysql, pdo_sqlite, Phar, posix, Reflection, session, SimpleXML, snmp, soap, SPL, sqlite3, standard, tokenizer, xml, xmlreader, xmlwriter, xsl, Zend OPcache, zip, zlib


■メール通知ができるサーバー
# PHP Extensions
apache2handler, bcmath, bz2, calendar, Core, ctype, curl, date, dom, ereg, exif, fileinfo, filter, ftp, gd, gettext, gmp, hash, iconv, json, libxml, mbstring, mcrypt, mhash, mysql, mysqli, mysqlnd, openssl, pcre, PDO, pdo_mysql, pdo_sqlite, Phar, posix, recode, Reflection, session, shmop, SimpleXML, soap, sockets, SPL, sqlite3, standard, sysvmsg, sysvsem, sysvshm, tidy, tokenizer, wddx, xdebug, xhprof, xml, xmlreader, xmlwriter, xsl, Zend OPcache, zip, zlib
 

Re: コメント欄のメール通知が送られない

2017年3月28日 at 9:42
ありがとうございます。

もしかすると、日本語のコメント文字を通知メールに載せるところの処理が不十分なバグの可能性があるかもですね。

コメント欄に記入したテキストはどのようなテキストをお使いだったでしょうか?
(念のために、日本語の文字列で特別にエスケープしないといけないような文字がないかの確認です。)
 

Re: コメント欄のメール通知が送られない

2017年3月28日 at 11:13
コメント欄に入力したテキストは、「 質問のテスト」「test test test test test test test 」など、とりあえず適当に入力したものですが、いずれもエラーになっていますね
 

Re: コメント欄のメール通知が送られない

2017年3月28日 at 10:48
さくらのスタンダード
ダメですね。
5.7は送信できましたが、バージョン8は同様のエラーです。

ヘテムルは、問題無く送信できました。
ファーストサーバ(Zenlogic)も問題なく送信できました。
 

Re: Re: コメント欄のメール通知が送られない

2017年3月28日 at 11:19
ご確認ありがとうございます

他のサーバーでは動作するということは、やはりさくらのレンタルサーバー+Ver.8での特有の問題みたいですね…
 

Re: コメント欄のメール通知が送られない

2017年3月28日 at 17:55
根本的な解決ではないかもしれませんが、concrete/config/concrete.php の320行目、『'address' => 'concrete5-noreply@concrete5',』が影響しているみたいです。
これを『'address' => 'concrete5-noreply@concrete5.com',』にするか、application/config/generated_overrides/concrete.php に

'email' => array(
'enabled' => true,
'default' => array(
'address' => 'piyo@hogehoge.com'
)
),

を追記すると送信できました。

ちなみに5.7の記述は、

'address' => 'concrete5-noreply@' . (isset($_SERVER['SERVER_NAME']) ? $_SERVER['SERVER_NAME'] : 'localhost'),

ですね。
以上、原因解明というよりご報告ということで... smiling
 

Re: コメント欄のメール通知が送られない

2017年3月28日 at 18:28
ありがとうございます!送信されるようになりました。
ドメイン部分が問題だったんですね。

ドメイン部分が不正としてサーバー側で判定してるのかなぁとなんとなく思います。
 

Re: コメント欄のメール通知が送られない

2017年3月29日 at 12:02
ちなみに上記のヘテムルとファーストサーバだと、それぞれ『.heteml.jp』『.localdomain』と自動的に付加されてます。
サーバの設定 or モジュールなんですかね?

5.7の記述だとダメなのかなぁ...
 

Re: コメント欄のメール通知が送られない

2017年3月29日 at 13:27
5.7の記述で大丈夫でした。
concrete/config/concrete.phpの334行目、addressの記述を、ご指摘のように5.7の記述に変えてみたところ、問題なく送信できました

'address' => 'concrete5-noreply@concrete5',

'address' => 'concrete5-noreply@' . (isset($_SERVER['SERVER_NAME']) ? $_SERVER['SERVER_NAME'] : 'localhost'),


やはりドメインの付与の問題だったようです。
他のサーバーで問題がないのであれば、さくらのレンタルサーバーの設定のせいですね

いろいろありがとうございました!
 

Re: コメント欄のメール通知が送られない

2017年3月29日 at 13:49
コアのファイルを書き換えた場合は、バージョンアップ時に気をつけてくださいね。

http://concrete5-japan.org/help/5-7/recipes/override-almost-any-core-file-in-5-7/

ご存知でしたら、すみません。
 

Re: Re: コメント欄のメール通知が送られない

2017年3月29日 at 13:55
そうですね、コアファイルはまずいですね

application/config/generated_overrides/concrete.phpを以下のようにしてオーバーライドで大丈夫でしたので、ご報告します

'email' => array(
'enabled' => true,
'default' => array(
'address' => 'concrete5-noreply@' . (isset($_SERVER['SERVER_NAME']) ? $_SERVER['SERVER_NAME'] : 'localhost'),
)
),
 

Re: コメント欄のメール通知が送られない

2017年3月29日 at 13:56
了解でーす ( •̀ᄇ• ́)ﻭ✧
 

Re: コメント欄のメール通知が送られない

2018年5月30日 at 22:25
突然すみません。
私もこちらをまねて設定してみて成功はしたのですが、ちょっと気になったことがあります。

【ホーム > concrete5の使い方・ヘルプ > 5.7以降 (モダン) > レシピ集 > 設定ファイルの使い方】の中に、
**
下記の設定の一部は concrete5 の管理画面からも設定が可能です。管理画面から設定した項目は concrete5 側で /application/config/generated_overrides/concrete.php としてファイルを生成し、設定を保存します。

このファイルは concrete5 側で変更を行うので、絶対にファイルを直接編集しないでください。
**
という内容がありました。

こちらのファイルに追記してももだいないのでしょうか。
また、追記は問題ないとして、管理画面から設定を変更した際には /application/config/generated_overrides/concrete.php  が書き換えられて、再度追記しなければいけないのでしょうか。
 

Re: コメント欄のメール通知が送られない

2018年5月31日 at 8:20
ご覧になったページに書かれている内容が詳しいので参照されるのがいいと思います。
http://concrete5-japan.org/help/5-7/recipes/config/

[補足]
/application/config/generated_overrides/concrete.php は 管理画面で設定した内容に準じてシステム側で勝手に書き換えが行われるので、/application/config/concrete.php を作成して そちらに記述してください。同じ設定がある場合は /applicaiton/config/concrete.php が優先されます。

注意が必要なのは、管理画面で変更して /application/config/generated_overrides/concrete.php が書き換わっても、
application/config/concrete.php で設定されていれば、反映されないということです。
 

Re: コメント欄のメール通知が送られない

2018年6月10日 at 7:51
返事が遅くなってしまい申し訳ございません。

思わぬ時にもとに戻ってしまうよりは良いと思うので、時間が取れた時に変更してみます。

ありがとうございました。