【问题标题】:Mandrill Api ?? in Subject山魈 ??在主题
【发布时间】:2015-12-11 14:46:35
【问题描述】:

我正在使用 Mandrill Transport (https://github.com/khanlou/MandrillTransport-CakePHP) 在我的 cakephp 应用程序中发送邮件。

但是当我发送邮件时,我得到了??由于特殊字符,在我的主题行中的奇怪位置。

主题 = 'Découvrez vite toutes les nouveautés sur r7site.com'

结果 = 'Découvrez vite toutes les nouveautés sur r7?? site.com'

如您所见??放置得很奇怪。

当我使用默认的 cakephp 邮件时,它就像一个魅力......

public $default = array(
    'transport' => 'Mail',
    'from' => 'noreply@q8mazout.be',
    'charset' => 'utf-8',
    'headerCharset' => 'utf-8',
);

我猜这与 utf-8 字符集有关,但我不确定。内容适用于山魈,实际上字符在主题中也打印得很好。只是 ??不应该在那里...

【问题讨论】:

    标签: email cakephp mandrill


    【解决方案1】:

    我终于找到了解决办法。显然,CakePHP 在标题中添加了换行符,导致标题中断。虽然它只发生在特殊字符上。

    标题的调试:

    '=?UTF-8?B?RMOpY291dnJleiB2aXRlIHRvdXRlcyBsZXMgbm91dmVhdXTDqXMgc3VyIHE4?= =?UTF-8?B?bWF6b3V0LmJl?='

    MandrillTestTransport 中的解决方案

    $subject = str_replace(array(PHP_EOL, "\r"), '', $this->_cakeEmail->subject());
    
    $message = array(
        'html' => $this->_cakeEmail->message('html'),
        'text' => $this->_cakeEmail->message('text'),
        'subject' => $subject,
        ...
    );
    

    【讨论】:

      【解决方案2】:

      您需要将内容从 ASCII 转换为 UTF-8,为此您可以使用以下函数,因为某些第三方 api (如 mandrill)很多时候不支持特殊字符。

      mb_convert_encoding($subject, 'UTF-8', 'ASCII');

      【讨论】:

      • 感谢您的回复!虽然不工作......现在标题:Découvrez vite toutes les nouveautés su?? r site.com
      • 我看到这个 stackoverflow 问题:stackoverflow.com/questions/31206544/… 但它是针对内容的,我没有问题吗?
      猜你喜欢
      • 2014-06-24
      • 2016-11-16
      • 2015-08-02
      • 2016-12-30
      • 1970-01-01
      • 1970-01-01
      • 2015-11-17
      • 2013-06-02
      • 2015-03-24
      相关资源
      最近更新 更多