我在使用mime邮件发送的附件中使用长文件名时遇到问题。
当我使用缩写时,比如:rapport.pdf
,效果很好。
但是,当我开始使用长文件名(如:rapport_2013_rapport_2013_rapport_2013_rapport_2013_rapport_2013_.pdf
)时,当将文件发送到电子邮件时,文件会得到一个新名称(未显示的附件xxxxx.pdf
)。
有办法解决这个问题吗?我已经尝试将编码更改为内联或附件。这是我使用的代码:
$mime = new Mail_Mime();
$mime->setHtmlBody($htmlMessage);
$mime->addAttachment($pdfcontent, 'application/pdf', 'factuur_QW'.$fcnr.'.pdf', false, 'base64');
$body = $mime->get();
$hdrs = $mime->headers($headers);
$mail = &Mail::factory('mail');
$mail->send($to, $hdrs, $body);
我看到了这篇文章:发送附件时文件名的最大长度有限制吗?
这表明,如果对文件名进行了适当的编码,则可以使用更长的文件名。尝试:
$mime->addAttachment($pdfcontent, 'application/pdf', 'factuur_QW'.$fcnr.'.pdf', false, 'base64', 'attachment', '', '', '', 'encoded-word', null, '=?utf-8?B' . base64_encode('factuur_QW'.$fcnr') . '?=', null);
根据指定的mime类型,".pdf"将添加到附件文件名中。如果字符在Ascii字符集中,也不需要使用base64对附件名称进行编码。在这种情况下,替换'=utf-8?B?'带有'=utf-8?Q?’。