使用PHP发送带附件的SES邮件出现Expected '/'、got ;错误如何解决?
报错原因
- 问题出在PHPMailer添加附件的参数配置上。
addStringAttachment方法的第四个参数为附件的MIME类型,标准MIME格式要求为类型/子类型的结构,你此处仅传入了pdf,不符合标准格式要求。 - AWS SES解析原始邮件的附件头时,期望读取到带
/分隔符的标准MIME类型,实际读取到的是不完整的pdf字段,因此抛出参数无效的错误。无附件时不会触发MIME类型校验,所以可以正常发送。
修复方案
修改addStringAttachment方法的第四个参数,传入完整的PDF格式MIME类型application/pdf即可,也可以省略该参数,PHPMailer会自动根据附件文件名的后缀识别匹配正确的MIME类型。
修改后的代码片段:
$mail->addStringAttachment( 'My DOMPDF content', 'attachment.pdf', PHPMailer::ENCODING_BASE64, 'application/pdf' );
省略第四个参数的写法也可以正常运行:
$mail->addStringAttachment( 'My DOMPDF content', 'attachment.pdf', PHPMailer::ENCODING_BASE64 );
内容的提问来源于stack exchange,提问作者danialk
相关产品推荐
相关产品推荐

