【发布时间】:2017-04-01 07:18:42
【问题描述】:
我正在使用 cakephp 发送电子邮件,并且我一直在使用以下网站对其进行测试: 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 电子邮件传输器配置
'aws' => [
'transport' => 'aws',
'from' => 'xxxx@zzzzz.z',
'charset' => 'utf-8',
'headerCharset' => 'utf-8',
]
这是我的电子邮件:
http://pastie.org/private/hzcicqrlzx425ucanxyl5a
谢谢
【问题讨论】:
-
我不明白为什么主题不只是一个字符串?你base64编码你的字符串并添加UTF-8字符当然结果就是你得到的
-
@YannChabot 没有编码,我在电子邮件上得到正确的主题(Inscrição no evento: ...)但在该网站上测试电子邮件,它说:1.1 SUBJ_ILLEGAL_CHARS 主题:有太多原始非法个字符和 0.1 SUBJECT_NEEDS_ENCODING 主题已编码但未指定编码
-
我想你想要的是 utf8_encode 吧?
-
base64_ENCODE:此编码旨在使二进制数据能够通过非 8 位干净的传输层(例如邮件正文)进行传输。 Base64 编码的数据比原始数据多占用大约 33% 的空间。
-
使用 UTF_8,主题如下:“=?UTF-8?B?Inscrição no evento”。编辑:这样称呼它:“utf8_encode('=?UTF-8?B?'.$subject.'?=')”。如果我在开始时删除 UTF 部分,它会再次显示 SUBJECT_NEEDS_ENCODING(如果我只编码主题变量,则相同)