我正在使用 cakePHP 电子邮件组件从我的应用程序发送邮件。现在返回路径有类似 www@domain.tld
使用 cakePHP 组件时,如何设置或重写电子邮件中的 Return-Path 值?
我知道在 PHP 中通过“邮件”发送邮件时该怎么做,但是 cakePHP 电子邮件组件似乎缺少这样的功能......或者我错过了什么?:)
我正在使用 cakePHP 电子邮件组件从我的应用程序发送邮件。现在返回路径有类似 www@domain.tld
使用 cakePHP 组件时,如何设置或重写电子邮件中的 Return-Path 值?
我知道在 PHP 中通过“邮件”发送邮件时该怎么做,但是 cakePHP 电子邮件组件似乎缺少这样的功能......或者我错过了什么?:)
在CakePHP 2中(Email 组件大部分被CakeEmail类取代),您可以在 /app/Config/email.php 中进行此配置:
class EmailConfig {
public $email = array(
...
// The next line attempts to create a 'Return-path' header
'returnPath' => 'myaddress@mydomain.com',
// But in some sendmail configurations (esp. on cPanel)
// you have to pass the -f parameter to sendmail, like this
'additionalParameters' => '-fmyaddress@mydomain.com',
...
);
}
或者,如果您只需要为一封电子邮件执行此操作,那么这样的事情应该可以工作......
App::uses('CakeEmail', 'Network/Email');
$email = new CakeEmail('MyConfig');
$email->from(...)
->to(...)
->subject(...)
->returnPath('myaddress@mydomain.com')
// Haven't tested this next line, but may possibly work?
->config(array('additionalParameters' => '-fmyaddress@mydomain.com'))
->send();
有一个名为 EmailComponent::return 的属性是错误消息的返回路径。请注意,这与 replyTo 属性不同。
$this->Email->return = 'name@example.com';
http://book.cakephp.org/1.3/en/The-Manual/Core-Components/Email.html
我和一位同事正在处理同样的问题,我们发现在 php.ini 中编辑以下行给了我们修复:
从:
sendmail_path = /usr/sbin/sendmail -t -i
到:
sendmail_path = /usr/sbin/sendmail -t -i -f youremail@address
测试时请务必将您的电子邮件发送到有效域。这让我们呆了几分钟。
要更改 CakePHP 电子邮件组件中的返回路径,我这样做:
...
$return_path_email = 'return@email.com';
...
$this->Email->additionalParams = '-f'.$return_path_email;
它就像魅力一样;)
当您在查看如何使用组件的其余部分时深入研究 cake 手册,您应该会看到类似以下内容。这就是设置返回路径的原因。
$this->Email->return = 'name@tld.com';