首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >全局覆盖CakeEmail目标

全局覆盖CakeEmail目标
EN

Stack Overflow用户
提问于 2016-12-01 09:01:54
回答 1查看 42关注 0票数 2

有没有一种简单的方法可以使用CakeEmail“覆盖”电子邮件的目的地?

我有一个使用这段代码发送电子邮件的模型方法:

代码语言:javascript
复制
$Email = new CakeEmail();
$Email->config('default');
$sent = $Email->template('new-notification')
              ->subject('A new notification for you')
              ->viewVars([
                    'name' => $foo['User']['name'],
                    'text' => $foo['Notification']['text'],
              )
              ->emailFormat('html')
              ->to($foo['User']['email'])
              ->send();

和这个配置:

代码语言:javascript
复制
class EmailConfig
{
    public $default = array(
        'host' => 'smtp.server.com',
        'port' => 587,
        'username' => 'user@domain.com',
        'password' => 'pwdAsYouKnow',
        'from' => array('noreply@domain.com' => 'Company'),
        'transport' => 'Smtp'
    );
}

如您所见,我为动态定义的用户的电子邮件发送电子邮件。

我的目标是当我在我的机器上进行本地开发时,强制每个对->send()的调用强制一个像developer@domain.com这样的目的地。

我可以很容易地检测到我是否在开发中,但是我不知道如何以“主”的方式强制CakeEmail只发送到一个定义的帐户,而不是在调用中设置的帐户。

我已经试过设置一个

代码语言:javascript
复制
'to' => array('developer@domain.com' => 'Dev'),

但是在$default内部,没有成功。

感谢大家的帮助,谢谢!

EN

回答 1

Stack Overflow用户

发布于 2016-12-01 21:50:05

我假设你在本地机器上运行在调试模式下,所以你可以检查调试模式是否打开,然后用它来发送不同的电子邮件

代码语言:javascript
复制
if(Configure::read('debug')){
  $emailTo = 'developer@domain.com'
}
else{
  $emailTo = $foo['User']['email'];
}

然后,您只需使用变量作为电子邮件地址:

代码语言:javascript
复制
$sent = $Email->template('new-notification')
          ->subject('A new notification for you')
          ->viewVars([
                'name' => $foo['User']['name'],
                'text' => $foo['Notification']['text'],
          )
          ->emailFormat('html')
          ->to($emailTo)
          ->send();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40900945

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档