2

我正在构建一个发送电子邮件的 CakePHP 网站,如下所示:

$email = new CakeEmail('default');
$email->template('test');
$email->emailFormat('html');
$email->to(array('john_doe@example.com' => 'John Doe'));
$email->subject('Test E-mail');
$email->helpers(array('Html', 'Text'));
$email->viewVars(
    array(
        ...
    )
);

if ($email->send()) {
    $this->Session->setFlash('The e-mail was sent!', 'default', array('class' => 'alert alert-success'));
}
else {
    $this->Session->setFlash('An unexpected error occurred while sending the e-mail.', 'default', array('class' => 'alert alert-error'));
}

除了实际发送电子邮件之外,我还希望能够在变量中捕获电子邮件呈现的 HTML。这样,我可以在数据库中记录电子邮件正文的确切内容。这是可行的吗?

4

2 回答 2

4

根据class的第 50 行MailTransport,实际函数似乎send()返回了消息和标题。所以而不是:

if($email->send()) {

尝试:

$mySend = $email->send();
if($mySend) {
    //...

那么,$mySend应该是一个数组:

array('headers' => $headers, 'message' => $message);
于 2012-03-15T20:37:58.903 回答
0

这就是我在我的 EmailLib 中所做的: https ://github.com/dereuromark/tools/blob/2.0/Lib/EmailLib.php

它记录电子邮件尝试并将电子邮件输出捕获到日志文件(email_trace.log)中/tmp/logs/- 如果您处于调试模式,它只会记录(不发送电子邮件 - 这已被证明对本地开发非常有用)。

您可以为您的案例编写一个类似的包装器。但是如果你想把它写回 DB Dave 的方法似乎更合适。

于 2012-03-15T22:02:51.847 回答