【问题标题】:How do I test an HTML Email Template on CakePHP?如何在 CakePHP 上测试 HTML 电子邮件模板?
【发布时间】:2019-03-18 14:02:14
【问题描述】:

要确认购买,我必须向客户发送一封电子邮件,其中包含她的购物车详细信息。我想测试 HTML 模板以使用适当的 CSS,当然还要检查到达它的数据。 我应该使用什么代码而不是设置电子邮件参数来观察模板在电子邮件上的呈现方式?

我是 CakePHP 的新手,非常感谢您的帮助。

提前致谢。

~何塞

【问题讨论】:

    标签: cakephp


    【解决方案1】:

    这是 CakePHP 1.3,但我感觉它也可以与 2.0 一起使用。虽然可能有其他方法可以做到这一点,但我通过在任何控制器中创建一个测试操作,然后返回电子邮件模板的渲染调用来做到这一点。看看这个:

    function email_test()
    {
        $this->layout = 'email/html/default';
        $user = $this->User->findById(1);
        $this->set('name', $user['User']['firstname']);
        $this->set('email_heading', 'Welcome to My App');
        return $this->render('/elements/email/html/welcome');
    }
    

    此操作现在将在浏览器中呈现您的电子邮件。

    【讨论】:

    • 长话短说,将布局设置为您的电子邮件布局。设置您的视图变量,然后强制呈现您想要查看的电子邮件视图。
    • 在 2.4 中,路径略有不同。布局现在位于 emails/html/default ets 下
    【解决方案2】:

    使用调试传输进行测试。

    如果你想让它更舒适地编写自己的传输,例如在 APP/tmp/email/.html 中创建一个新的 html 文件,请参阅调试传输类作为参考,这样做很容易http://api20.cakephp.org/view_source/debug-transport#l-34

    另见本书 -> http://book.cakephp.org/2.0/en/core-utility-libraries/email.html#using-transports

    【讨论】:

    • 如果我也使用 EmailComponent 类,这应该可以工作吗?
    【解决方案3】:

    这是我用来在浏览器中显示我想使用 cakephp 电子邮件类发送的电子邮件的 html/纯文本内容的简单方法,即App::uses('CakeEmail', 'Network/Email');。 只需在电子邮件模板文件或(电子邮件布局文件)末尾添加exit,然后尝试发送电子邮件。它将呈现电子邮件内容。

    HTH。

    【讨论】:

      【解决方案4】:
          $this->Email->to = $user_id_array[0]['User']['email'];
          $this->Email->subject = $arrTemplate[0]['EmailTemplate']['subject'];
          $this->Email->replyTo = 'Admin<admin@indianic.com>';
          $this->Email->from = 'Admin<admin@indianic.com>';
          $this->Email->sendAs = 'html';
          $this->Email->template = '/elements/email/html/warning_message';
      
         $this->set('email_message',$arrTemplate[0]['EmailTemplate']['body']);
         $this->Email->send();
      

      这样就可以设置邮件模板了

      【讨论】:

      • 我的问题不是为电子邮件设置模板,而是在实际发送之前检查模板将如何呈现。
      【解决方案5】:

      如果您想在本地主机上打印您的 电子邮件模板 进行测试,那么您可以使用此代码。

      $this->Email->send();
      print_r($this->Email->htmlMessage);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-09-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-11-15
        相关资源
        最近更新 更多