コメント欄のメール通知が送られない
コメント欄ブロックにコメントがあった場合の通知を設定しているのですが、
通知のメールが送信されず、ログには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: Re: コメント欄のメール通知が送られない
フォームブロックの通知は送信できました
ログは以下です
ここから================================
**メール機能は有効。このメールは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: コメント欄のメール通知が送られない
別のサーバーだと動くので、サーバー側の問題とは思っています
モジュールのせいかなとも思っているので、モジュールについても記載しておきます。
■メール通知ができないサーバー
# 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: コメント欄のメール通知が送られない
これを『'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'),
ですね。
以上、原因解明というよりご報告ということで...
Re: コメント欄のメール通知が送られない
concrete/config/concrete.phpの334行目、addressの記述を、ご指摘のように5.7の記述に変えてみたところ、問題なく送信できました
'address' => 'concrete5-noreply@concrete5',
↓
'address' => 'concrete5-noreply@' . (isset($_SERVER['SERVER_NAME']) ? $_SERVER['SERVER_NAME'] : 'localhost'),
やはりドメインの付与の問題だったようです。
他のサーバーで問題がないのであれば、さくらのレンタルサーバーの設定のせいですね
いろいろありがとうございました!
Re: コメント欄のメール通知が送られない
http://concrete5-japan.org/help/5-7/recipes/override-almost-any-core-file-in-5-7/
ご存知でしたら、すみません。
Re: Re: コメント欄のメール通知が送られない
application/config/generated_overrides/concrete.phpを以下のようにしてオーバーライドで大丈夫でしたので、ご報告します
'email' => array(
'enabled' => true,
'default' => array(
'address' => 'concrete5-noreply@' . (isset($_SERVER['SERVER_NAME']) ? $_SERVER['SERVER_NAME'] : 'localhost'),
)
),
Re: コメント欄のメール通知が送られない
私もこちらをまねて設定してみて成功はしたのですが、ちょっと気になったことがあります。
【ホーム > concrete5の使い方・ヘルプ > 5.7以降 (モダン) > レシピ集 > 設定ファイルの使い方】の中に、
**
下記の設定の一部は concrete5 の管理画面からも設定が可能です。管理画面から設定した項目は concrete5 側で /application/config/generated_overrides/concrete.php としてファイルを生成し、設定を保存します。
このファイルは concrete5 側で変更を行うので、絶対にファイルを直接編集しないでください。
**
という内容がありました。
こちらのファイルに追記してももだいないのでしょうか。
また、追記は問題ないとして、管理画面から設定を変更した際には /application/config/generated_overrides/concrete.php が書き換えられて、再度追記しなければいけないのでしょうか。
Re: コメント欄のメール通知が送られない
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 で設定されていれば、反映されないということです。
Katz Ueno
Re: コメント欄のメール通知が送られない
普通のフォームブロックの通知は送ることができますか?
それも送ることが出来ませんか?