2016-11-17 61 views
1

我送与CakePHP的电子邮件和我一直在与followign网站测试它: http://spamcheck.postmarkapp.com/CakePHP的邮件编码对象给出错误的字符

我有几个问题,它们中的哪一个是对象的编码。

现在,一个解决方案,遵循我在互联网上找到的一些解决方案。代码的第一行就是我与主题

这里做什么是我的代码:

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

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

我收到的电子邮件后,受试者显示:“= UTF-的8B SW5zY3Jpw6fDo28gbm8gZXZlbnRvOiBOYXRpb25hbCBDb25mZXJlbmNlIG9uIEh1bWFuIFBhcGlsbG9tYSBWaXJ1cw =??? =?=“

我错过了什么?

编辑:

我使用CakePHP 3.3,这里是我的AWS邮件转运的配置

'aws' => [ 
     'transport' => 'aws', 
     'from' => '[email protected]', 
     'charset' => 'utf-8', 
     'headerCharset' => 'utf-8', 
    ] 

这里是我的电子邮件:

http://pastie.org/private/hzcicqrlzx425ucanxyl5a

感谢

+0

我不明白的细节,为什么主体不仅是一个字符串?你base64编码你的字符串,并添加UTF-8字符当然结果就是你得到的结果 –

+0

@YannChabot没有编码,我得到的主题正确的电子邮件(Inscriçono evento:...),但测试该网站上的电子邮件,它说: 1.1 SUBJ_ILLEGAL_CHARS主题:有太多的原始非法字符和0。1 SUBJECT_NEEDS_ENCODING主体被编码但没有指定编码 – Cafn

+0

我想你想要的是utf8_encode也许? –

回答

1

关于结果:

  • 您与base64编码的电子邮件Subject文本。
  • 因此,您从Subject纯文本中获得encoded文本。

您应该使用电子邮件作为Subject串/纯文本。邮件服务没有decode您的自定义encode类型。通过键入从config/app.phpEmailTransportEmail

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

搜索和检查你的电子邮件的配置是否正确配置:

更改Subject字符串。

她大约是CakePHP 3.x Email