如何使用电子邮件传输类" 调试"查看结果(最终邮件)?在CakePHP 3?或者我在哪里可以找到返回的结果?在the book中没有关于电子邮件调试的详细信息。
在// Each transport needs a `className`. Valid options are as follows:
// - Mail : Send using PHP mail function
// - Smtp : Send using SMTP
// - Debug : Do not send the email, just return the result
中说
'EmailTransport' => [
'default' => [
'className' => 'Debug',
],
],
所以我设置了
namespace App\Controller;
use App\Controller\AppController;
use Cake\Event\Event;
use Cake\Network\Exception\NotFoundException;
use Cake\Mailer\Email;
class TestsController extends AppController {
public function email_test() {
$email = new Email('default');
$email->from(['website@example.com' => 'My Site'])
->to('destination@example.com')
->subject('Here the subject')
->send('Here the mail content'));
}
}
在测试控制器中:
/tmp/
但结果(最终邮件)保存或显示在哪里?
我期望在/logs/
或localhost/test/email_test/
中调试结果,但无法找到有关最终邮件的任何信息。
如果我在浏览器中查看测试页(tl.to(elArray[left], 1, { css:{left: elArray[right].offset().left + "px" }});
tl.to(elArray[right], 1, { css:{left: elArray[left].offset().left + "px" });
),则不会显示任何内容(因为我不知道要在视图模板中添加哪些内容以进行电子邮件调试)。 CakePHP-DebugKit中还没有关于邮件的信息...
(我目前正在使用CakePHP 3.1 beta对此进行测试,如果相关的话)
答案 0 :(得分:3)
结果由Email::send()
方法返回。它总是返回邮件内容,只是Debug
传输实际上并没有发送它。
$result = $email->...->send('Here the mail content');
debug($result);
<强> https://github.com/cakephp/.../3.1.0-beta2/src/Mailer/Transport/DebugTransport.php#L36 强>
我猜这些文档中的更多细节不会受到影响。
如果您想要记录邮件,则必须使用log
选项启用/配置传输配置中的日志记录。默认情况下,它设置为false
。
'log'
:记录电子邮件标题和消息的日志级别。true
将使用LOG_DEBUG
答案 1 :(得分:1)
我今天遇到了同样的问题,花了我一段时间才弄清楚。我认为一个完整的示例会很有用,所以这就是我的结论:
app.php:
/**
* Email configuration.
*/
'EmailTransport' => [
'default' => [
//This disables the actual sending of the mail
'className' =>"Debug",
'host' => 'smtp.office365.com',
'port' => 587,
'timeout' => 30,
'username' => 'username',
'password' => 'secret',
'client' => null,
'tls' => true,
'url' => env('EMAIL_TRANSPORT_DEFAULT_URL', null),
],
],
/**
* Email delivery profiles
*/
'Email' => [
'default' => [
'transport' => 'default',
'from' => 'sender@domain.com',
//this enables logging of the mail
'log' => true,
],
],
/**
* Configures logging options
*/
'Log' => [
//Setup a special log config for mails
'email' => [
'className' => FileLog::class,
'path' => LOGS,
'file' => 'email', //filename for logging
'url' => env('LOG_DEBUG_URL', null),
'levels' => ['notice', 'info', 'debug'],
//Set the scope to email
'scopes' => ['email'],
],
...
],
请注意,'log'=> true 行出现在电子邮件配置文件中,而不是传输配置中。在文档中这还不是很清楚。 另请注意,电子邮件类的日志范围为“电子邮件”。因此必须在日志记录配置中定义-否则不会显示任何内容。 希望这会有所帮助。
答案 2 :(得分:0)