Cakephp电子邮件编码主题提供错误的字符

时间:2016-11-17 16:29:43

标签: php email cakephp

我发送带有cakephp的电子邮件,我一直在使用followign网站进行测试: http://spamcheck.postmarkapp.com/

我遇到了几个问题,其中一个是主题的编码。

现在,根据我在互联网上找到的一些解决方案,解决了这个问题。代码的第一行是我正在处理的主题

这是我的代码:

$newsubject='=?UTF-8?B?'.base64_encode($subject).'?=';

$email = new Email('aws');
    $email->from(['xxxx@zzzz.zz' => 'test'])
    ->template('default','confirmation')
    ->viewVars([
        'user_email' => $emailTo,
    ])
    ->emailFormat('both')
    ->to($emailTo)
    ->subject($newsubject)
     ->replyTo('support@uphill.pt')
    ->helpers(['Html', 'Text'])
    //->attachments($attachment->path)
    ->send($message);

收到电子邮件后,主题显示:" =?UTF-8?B?SW5zY3Jpw6fDo28gbm8gZXZlbnRvOiBOYXRpb25hbCBDb25mZXJlbmNlIG9uIEh1bWFuIFBhcGlsbG9tYSBWaXJ1cw ==?="

我错过了什么?

修改

我正在使用Cakephp 3.3,这是我的电子邮件传输配置

'aws' => [
        'transport' => 'aws',
        'from' => 'xxxx@zzzzz.z',
        'charset' => 'utf-8',
        'headerCharset' => 'utf-8',
    ]

这是我的电子邮件:

http://pastie.org/private/hzcicqrlzx425ucanxyl5a

由于

1 个答案:

答案 0 :(得分:1)

关于结果:

  • 您使用Subject对电子邮件base64文字进行了编码。
  • 因此,您可以从encoded纯文本中获取Subject文字。
  

您应该使用电子邮件Subject作为字符串/纯文本。邮件服务不会自动decode您的自定义encode类型。

更改Subject字符串:

$newsubject='=?UTF-8?B?'.base64_encode($subject).'?=';
#TO
$newsubject=$subject;
  

EmailTransport键入Emailconfig/app.php进行搜索,并检查您的电子邮件配置是否已正确配置。

她是关于CakePHP 3.x Email

的详细信息