Локальная отправка email в консоли. Где файл email ?
Локальная отправка email в консоли. Где файл email ?
У меня настроено так , что если локально я отправляю email ( SwiftMailer) то файл мыла ложится в зависимости от id приложения в котором запускается майлер:
frontent -> frontend/runtime/mail/...
backend -> backend/runtime/mail/...
но вот с консолью мыла нет
console -> console/runtime/<НЕТ ПАПКИ MAIL>
подскажите подалуйста как исправить данную ситуацию
frontent -> frontend/runtime/mail/...
backend -> backend/runtime/mail/...
но вот с консолью мыла нет
console -> console/runtime/<НЕТ ПАПКИ MAIL>
подскажите подалуйста как исправить данную ситуацию
Re: Локальная отправка email в консоли. Где файл email ?
> то файл мыла ложится в зависимости от id приложения....
Покажите код
Покажите код
Re: Локальная отправка email в консоли. Где файл email ?
Так показывать то и нечего :
Код: Выделить всё
$mailer = new Mailer();
$mailer->compose(['html' => $this->html_view, 'text' => $this->text_view], $this->params)
->setTo($this->to)
->setFrom($this->sender_email)
->setSubject($this->subject)
->send();
YII_DEBUG = true
и
YII_ENV = dev
Код: Выделить всё
Yii::error('test');
( в глобальном варианте шлет правильно на мыло домена )
Re: Локальная отправка email в консоли. Где файл email ?
Так показывать то и нечего :
Код: Выделить всё
$mailer = new Mailer();
$mailer->compose(['html' => $this->html_view, 'text' => $this->text_view], $this->params)
->setTo($this->to)
->setFrom($this->sender_email)
->setSubject($this->subject)
->send();
YII_DEBUG = true
и
YII_ENV = dev
\Выполняем в консоли код контроллера:
Код: Выделить всё
class SendRegistrationReminderController extends \yii\console\Controller
{
public function actionIndex()
{
\Yii::error('test');
exit;
}
}
( в глобальном варианте шлет правильно на мыло домена )
- Dominus
- Сообщения: 892
- Зарегистрирован: 2013.03.14, 21:27
- Откуда: Россия, Иваново
- Контактная информация:
Re: Локальная отправка email в консоли. Где файл email ?
Может дело в console/config/params.php?
А именно:
А именно:
Код: Выделить всё
<?php
return [
'adminEmail' => '',// <---
'supportEmail' => '',
];
Не спорь с дураком, иначе окружающие не правильно поймут кто из вас дурак!
Re: Локальная отправка email в консоли. Где файл email ?
Dominus писал(а): ↑2017.12.12, 10:31 Может дело в console/config/params.php?
А именно:Код: Выделить всё
<?php return [ 'adminEmail' => '',// <--- 'supportEmail' => '', ];
не
дело не в этом ( но я попробовал на всякий случай )
и да, мне определенно понятно что дело в конфиге , но где именно - вопрос
поэтому покажу ка я вообще конфигурацию:
код файла Yii.php который используется при запуске контроллера в консоли:
Код: Выделить всё
#!/usr/bin/env php
<?php
/**
* Yii console bootstrap file.
*
* @link http://www.yiiframework.com/
* @copyright Copyright (c) 2008 Yii Software LLC
* @license http://www.yiiframework.com/license/
*/
define('YII_DEBUG',false);
require(__DIR__ . '/env.php');
// fcgi doesn't have STDIN and STDOUT defined by default
defined('STDIN') or define('STDIN', fopen('php://stdin', 'r'));
defined('STDOUT') or define('STDOUT', fopen('php://stdout', 'w'));
require(__DIR__ . '/vendor/autoload.php');
require(__DIR__ . '/vendor/yiisoft/yii2/Yii.php');
require(__DIR__ . '/common/config/bootstrap.php');
require(__DIR__ . '/console/config/bootstrap.php');
$config = yii\helpers\ArrayHelper::merge(
require(__DIR__ . '/common/config/base.php'),
require(__DIR__ . '/console/config/console.php')
);
$application = new yii\console\Application($config);
$exitCode = $application->run();
exit($exitCode);
env.php
Код: Выделить всё
<?php
/**
* Require helpers
*/
require_once(__DIR__ . '/common/helpers.php');
defined('YII_DEBUG') or define('YII_DEBUG', true);
defined('YII_ENV') or define('YII_ENV', 'dev');
common/config/base.php
Код: Выделить всё
<?php
$config = [
'vendorPath' => dirname(dirname(__DIR__)) . '/vendor',
'extensions' => require(__DIR__ . '/../../vendor/yiisoft/extensions.php'),
'language' => Yii::getAlias('@defaultLanguage'),
'sourceLanguage' => 'ru',
'bootstrap' => ['log'],
'defaultRoute' => 'site/index',
'components' => [
'cache' => [
'class' => 'yii\redis\Cache',
'redis' => [
'hostname' => 'localhost',
'port' => 6379,
'database' => 0,
],
'keyPrefix' => Yii::getAlias('@domainName')
],
'redis' => [
'class' => 'yii\redis\Connection',
'hostname' => 'localhost',
'port' => 6379,
'database' => 1,
],
'formatter' => [
'class' => 'yii\i18n\Formatter',
//'dateFormat' => 'MM-dd-yyy',
//'datetimeFormat' => 'php:m-d-Y H:i:s',
//'timeFormat' => 'H:i:s',
'timeZone' => 'UTC',
'locale' => 'en_US'
],
'i18n' => [
'translations' => [
'*' => [
'class' => 'yii\i18n\DbMessageSource',
'db' => 'db',
'sourceLanguage' => 'ru', // Developer language
'sourceMessageTable' => '{{%language_source}}',
'messageTable' => '{{%language_translate}}',
'cachingDuration' => 86400,
'enableCaching' => YII_DEBUG ? false : true,
'forceTranslation' => true
],
],
],
'db' => [
'class' => 'yii\db\Connection',
'dsn' => Yii::getAlias('@dsn'),
'username' => Yii::getAlias('@dbUsername'),
'password' => Yii::getAlias('@dbPassword'),
'charset' => 'utf8',
'enableSchemaCache' => true,
'schemaCache' => 'cache',
'schemaCacheDuration' => 5533600,
],
'mailer' => [
'class' => 'yii\swiftmailer\Mailer',
'useFileTransport' => YII_DEBUG ? true : false,
'messageConfig' => [
'charset' => 'UTF-8',
'from' => Yii::getAlias('@supportEmail')
]
],
'log' => [
'traceLevel' => YII_DEBUG ? 3 : 0,
'targets' => [
'db' => [
'class' => 'yii\log\DbTarget',
'levels' => ['error', 'warning'],
'except' => [
'yii\web\HttpException:404',
],
'prefix' => function () {
$url = !Yii::$app->request->isConsoleRequest ? Yii::$app->request->getUrl() : null;
return sprintf('[%s][%s]', Yii::$app->id, $url);
},
'logVars' => ['_SERVER'],
'logTable' => '{{%system_log}}',
],
[
'class' => 'yii\log\EmailTarget',
'mailer' => 'mailer',
'levels' => ['error', 'warning'],
'message' => [
'to' => [Yii::getAlias('@supportEmail')],
'subject' => 'Server LOG',
],
],
],
],
'settings' => [
'class' => 'common\components\Settings'
]
],
'modules' => [
'gridview' => [
'class' => '\kartik\grid\Module'
],
'fileStorage' => [
'class' => '\trntv\filekit\Storage',
'baseUrl' => '@storageUrl/source',
'filesystem' => [
'class' => 'common\components\filesystem\LocalFlysystemBuilder',
'path' => '@storage/web/source'
],
'as log' => [
'class' => 'common\behaviors\FileStorageLogBehavior',
'component' => 'fileStorage'
]
],
],
'params' => [
'appName' => Yii::getAlias('@appName'),
'adminEmail' => Yii::getAlias('@adminEmail'),
'robotEmail' => Yii::getAlias('@robotEmail'),
'supportEmail' => Yii::getAlias('@supportEmail'),
'pageSize' => 10
],
];
if (YII_ENV == 'prod') {
$config['components']['log']['targets']['email'] = [
'class' => 'yii\log\EmailTarget',
'levels' => ['error'],
'message' => ['from' => Yii::getAlias('@robotEmail'), 'to' => Yii::getAlias('@errorEmail')]
];
}
if (YII_ENV == 'dev') {
// configuration adjustments for 'dev' environment
$config['bootstrap'][] = 'debug';
$config['modules']['debug'] = 'yii\debug\Module';
$config['bootstrap'][] = 'gii';
$config['modules']['gii'] = 'yii\gii\Module';
}
return $config;
Код: Выделить всё
<?php
return [
'id' => 'console',
'basePath' => dirname(__DIR__),
'controllerNamespace' => 'console\controllers',
'bootstrap' => ['log'],
'controllerMap' => [
'message' => [
'class' => 'console\controllers\ExtendedMessageController'
],
'app' => 'console\\controllers\\AppController',
'migrate' => 'dmstr\\console\\controllers\\MigrateController',
'rbac' => [
'class' => 'console\controllers\RbacController'
],
'fixture' => [
'class' => 'yii\faker\FixtureController',
'fixtureDataPath' => '@tests/common/fixtures/data',
'templatePath' => '@tests/common/templates/fixtures',
'namespace' => 'tests\common\fixtures',
],
],
'modules' => [
'rbac' => 'dektrium\rbac\RbacConsoleModule',
],
'params' => [
'yii.migrations' => [
'@lajax/translatemanager/migrations',
'@modules/user/migrations',
'@yii/rbac/migrations',
],
],
];
- Dominus
- Сообщения: 892
- Зарегистрирован: 2013.03.14, 21:27
- Откуда: Россия, Иваново
- Контактная информация:
Re: Локальная отправка email в консоли. Где файл email ?
Только что сделал тест в своём приложении, всё норм, письмо приходит в папку console/runtime/mail.
Приведу свою конфигурацию и код с тестовым контроллером:
yii.php
common/config/main.php
common/config/main-local.php
console/config/main.php
console/config/params.php
console/config/params-local.php
console/controllers/EmailController.php
Результат:
Письмо пришло в console/runtime/mail
Вроде ничего не забыл.
Приведу свою конфигурацию и код с тестовым контроллером:
yii.php
Код: Выделить всё
#!/usr/bin/env php
<?php
/**
* Yii console bootstrap file.
*
* @link http://www.yiiframework.com/
* @copyright Copyright (c) 2008 Yii Software LLC
* @license http://www.yiiframework.com/license/
*/
defined('YII_DEBUG') or define('YII_DEBUG', true);
defined('YII_ENV') or define('YII_ENV', 'dev');
require(__DIR__ . '/vendor/autoload.php');
require(__DIR__ . '/vendor/yiisoft/yii2/Yii.php');
require(__DIR__ . '/common/config/bootstrap.php');
require(__DIR__ . '/console/config/bootstrap.php');
$config = yii\helpers\ArrayHelper::merge(
require(__DIR__ . '/common/config/main.php'),
require(__DIR__ . '/common/config/main-local.php'),
require(__DIR__ . '/console/config/main.php'),
require(__DIR__ . '/console/config/main-local.php')
);
$application = new yii\console\Application($config);
$exitCode = $application->run();
exit($exitCode);
Код: Выделить всё
return [
//...
'components' => [
//...
'mailer' => [
'class' => 'yii\swiftmailer\Mailer',
'viewPath' => '@common/mail',
'useFileTransport' => false,
],
],
//...
];
Код: Выделить всё
return [
//...
'components' => [
//...
'mailer' => [
'useFileTransport' => true,
],
],
//...
];
Код: Выделить всё
<?php
$params = array_merge(
require(__DIR__ . '/../../common/config/params.php'),
require(__DIR__ . '/../../common/config/params-local.php'),
require(__DIR__ . '/params.php'),
require(__DIR__ . '/params-local.php')
);
return [
'id' => 'app-console',
'language' => 'en',
//...
'params' => $params,
];
Код: Выделить всё
<?php
return [
'adminEmail' => '',
'supportEmail' => '',
];
Код: Выделить всё
<?php
return [
'adminEmail' => 'admin@example.loc',
'supportEmail' => 'support@example.loc',
];
Код: Выделить всё
<?php
namespace console\controllers;
use Yii;
use yii\console\Controller;
use console\components\helpers\Console;
/**
* Class EmailController
* @package console\controllers
*/
class EmailController extends Controller
{
public function actionIndex()
{
echo 'yii email/send' . PHP_EOL;
}
public function actionSend()
{
$email = Yii::$app->params['supportEmail'];
$send = Yii::$app->mailer->compose()
->setTo($email)
->setFrom(['test@example.loc' => 'Tester'])
->setSubject('Testing')
->setTextBody('Send email test for console app.')
->send();
$this->log($send);
}
/**
* @param bool $success
*/
private function log($success)
{
if ($success) {
$this->stdout(Console::convertEncoding(Yii::t('app', 'Success!')), Console::FG_GREEN, Console::BOLD);
} else {
$this->stderr(Console::convertEncoding(Yii::t('app', 'Error!')), Console::FG_RED, Console::BOLD);
}
echo PHP_EOL;
}
}
Код: Выделить всё
> php yii email/send
Success!
Вроде ничего не забыл.
Не спорь с дураком, иначе окружающие не правильно поймут кто из вас дурак!
Re: Локальная отправка email в консоли. Где файл email ?
Дебаг-то включи )
Сам его здесь отключаешь:
Сам его здесь отключаешь:
А потом по отключенному дебагу не используешь вывод в файл:zxczxc12 писал(а): ↑2017.12.12, 12:39 код файла Yii.php который используется при запуске контроллера в консоли:Код: Выделить всё
#!/usr/bin/env php <?php define('YII_DEBUG',false); require(__DIR__ . '/env.php');
zxczxc12 писал(а): ↑2017.12.12, 12:39 common/config/base.phpКод: Выделить всё
'mailer' => [ 'class' => 'yii\swiftmailer\Mailer', 'useFileTransport' => YII_DEBUG ? true : false, 'messageConfig' => [ 'charset' => 'UTF-8', 'from' => Yii::getAlias('@supportEmail') ] ],
Re: Локальная отправка email в консоли. Где файл email ?
useFileTransport не указан