2013-02-07 58 views
0

我在附件發送MIME郵件時使用長文件名有問題。通過郵件MIME附件的文件名php

當我使用短名稱,如:rapport.pdf它工作正常。

但是,當我開始使用長文件名時,例如:rapport_2013_rapport_2013_rapport_2013_rapport_2013_rapport_2013_.pdf,文件在將文件發送到電子郵件時獲得一個新名稱(untigled attchment 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); 
+1

你用什麼來發送你的電子郵件?我們可以看到一些代碼嗎? – j0k

+0

我剛加了一段代碼。 – Kenny

+0

我還發現重音字符的問題。我敢打賭,保留64個字符以下的文件名不重音 –

回答

0

我碰到這篇文章就來了:Is there any limit on the maximum length of filename while sending attachments?

這表明,你可以有長文件名,如果他們適當地編碼。請嘗試:

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