有没有一种简单的方法可以使用CakeEmail“覆盖”电子邮件的目的地?
我有一个使用这段代码发送电子邮件的模型方法:
$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();和这个配置:
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只发送到一个定义的帐户,而不是在调用中设置的帐户。
我已经试过设置一个
'to' => array('developer@domain.com' => 'Dev'),但是在$default内部,没有成功。
感谢大家的帮助,谢谢!
发布于 2016-12-01 21:50:05
我假设你在本地机器上运行在调试模式下,所以你可以检查调试模式是否打开,然后用它来发送不同的电子邮件
if(Configure::read('debug')){
$emailTo = 'developer@domain.com'
}
else{
$emailTo = $foo['User']['email'];
}然后,您只需使用变量作为电子邮件地址:
$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();https://stackoverflow.com/questions/40900945
复制相似问题