0

我在通过 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); 
4

1 回答 1

0

我偶然发现了这篇文章:发送附件时文件名的最大长度是否有限制?

这表明如果对它们进行适当编码,您可以拥有更长的文件名。尝试:

$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?'。

于 2017-02-08T12:11:27.987 回答