Как переписать или установить Return-Path в компоненте электронной почты cakePHP? - PullRequest
9 голосов
/ 28 января 2010

Я использую компонент электронной почты cakePHP для отправки писем из своего приложения. Теперь у пути возврата есть что-то вроде www@domain.tld

Как установить или переписать значение Return-Path в электронных письмах при использовании компонента cakePHP?

Я знаю, как это сделать при отправке почты через «mail» в PHP, но компонент электронной почты cakePHP, похоже, не имеет такой возможности ... или я что-то упустил? :)

Ответы [ 5 ]

8 голосов
/ 12 июня 2014

В CakePHP 2 (где компонент электронной почты в значительной степени заменен классом 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();
4 голосов
/ 28 января 2010

Существует атрибут EmailComponent :: return, который является путем возврата для сообщений об ошибках. Обратите внимание, что это отличается от атрибута replyTo.

$this->Email->return = 'name@example.com';

http://book.cakephp.org/1.3/en/The-Manual/Core-Components/Email.html

3 голосов
/ 19 ноября 2011

Мы с коллегой работали над этой же проблемой, мы обнаружили, что редактирование следующей строки в php.ini дало нам исправление:

от

sendmail_path = /usr/sbin/sendmail -t -i

до:

sendmail_path = /usr/sbin/sendmail -t -i -f youremail@address

при тестировании обязательно отправляйте свои письма на действительный домен. это застало нас на несколько минут.

2 голосов
/ 29 августа 2011

Чтобы изменить путь возврата в компоненте электронной почты CakePHP, я делаю так:

...
$return_path_email = 'return@email.com';
...

$this->Email->additionalParams = '-f'.$return_path_email;

и работает как шарм;)

0 голосов
/ 28 января 2010

Изучая руководство по торту, когда вы смотрели, как использовать оставшуюся часть компонента, вы должны были увидеть что-то вроде следующего. Это то, что устанавливает Return-Path.

$ this-> Email-> return = 'name@tld.com';

...