【问题标题】:How to rewrite or set the Return-Path in cakePHP Email Component?如何重写或设置 cakePHP 电子邮件组件中的 Return-Path?
【发布时间】:2011-01-10 12:47:39
【问题描述】:

我正在使用 cakePHP 电子邮件组件从我的应用程序发送邮件。现在返回路径有类似 www@domain.tld

使用 cakePHP 组件时如何设置或重写邮件中的 Return-Path 值?

我知道在 PHP 中通过“邮件”发送邮件时该怎么做,但是 cakePHP 电子邮件组件似乎缺少这样的功能......或者我错过了什么? :)

【问题讨论】:

  • 我对 $this->Email->return = xy@domain.tld 的问题是它在通过邮件/默认发送时被后缀重写。我不得不通过 smtp 发送我的邮件,其中返回也不起作用 - 但是:它被发件人/发件人重新发送。有谁知道为什么后缀重写返回路径?蛋糕调试确实显示了备用返回路径设置。

标签: email cakephp return-path


【解决方案1】:

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();

【讨论】:

  • 对于 CakePHP 2,->config(array('additionalParameters' => '-f myaddress@mydomain.com')) 是行得通的。不需要指定 returnPath()。
【解决方案2】:

有一个名为 EmailComponent::return 的属性是错误消息的返回路径。请注意,这与 replyTo 属性不同。

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

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

【讨论】:

  • 你完全正确。也像乔恩说的那样,这是一个简单的 $this->Email->return = 'name@example.com';它以前尝试过,但没有用(现在也没有,但我想我可能知道问题出在哪里)。好像我们的邮件服务器在发送之前重写了标题:/
【解决方案3】:

我和一位同事正在处理同样的问题,我们发现在 php.ini 中编辑以下行可以解决我们的问题:

来自:

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

到:

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

在测试时,请务必将您的电子邮件发送到有效域。这让我们呆了几分钟。

【讨论】:

    【解决方案4】:

    要更改 CakePHP 电子邮件组件中的返回路径,我这样做:

    ...
    $return_path_email = 'return@email.com';
    ...
    
    $this->Email->additionalParams = '-f'.$return_path_email;
    

    它的作用就像魅力;)

    【讨论】:

    • 解决$this->Email->return在实际发送邮件时被覆盖的问题。
    【解决方案5】:

    当您查看如何使用其余组件时,您应该会看到类似以下内容的内容。这就是设置返回路径的原因。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-07-15
      • 1970-01-01
      • 2011-05-08
      • 2011-02-22
      • 2011-01-01
      • 2011-07-21
      • 2014-07-07
      • 2015-08-22
      相关资源
      最近更新 更多