2013-11-06 6 views
3

Каков правильный способ добавления вложения при использовании Zend_Mail? Я продолжаю получать следующую ошибку, когда пытаюсь открыть прилагаемый pdf-файл в отправляемой почте: «Не удается извлечь встроенный шрифт« BAAAAAA + ArialMT ». Некоторые символы могут не отображаться или печатать правильно». PDF показывает только таблицу, но без символов.Добавление вложения PDF при использовании Zend_Mail

Это очень странно, потому что PDF открывается, если я загружаю его непосредственно с сервера или на мой localhost.

Это код, который я использовал для отправки прикрепленного:

$html = $view->render('email/invoice.phtml'); 
$mail = new Zend_Mail("utf-8"); 

$file = PUBLIC_PATH . DS . 'data' . DS . $invoice . '.pdf'; 
$at = new Zend_Mime_Part(file_get_contents($file)); 
$at->filename = basename($file); 
$at->disposition = Zend_Mime::DISPOSITION_ATTACHMENT; 
$at->encoding = Zend_Mime::ENCODING_8BIT; 
$mail->addAttachment($at); 

/* Here i add the attachment */ 
$mail->setBodyHtml($html); 
$mail->addTo($order->email, 'Factura '. $invoice . ' '.Zend_Registry::get('siteName')); 
$mail->setFrom('[email protected]', Zend_Registry::get('siteName')); 
$mail->setSubject('Factura '. $invoice . ' '.Zend_Registry::get('siteName')); 
$mail->send(); 

ответ

21

Вот это правильный способ сделать это,

$mail = new Zend_Mail(); 
$mail->setBodyHtml("description"); 
$mail->setFrom('id', 'name'); 
$mail->addTo(email, name); 
$mail->setSubject(subject); 

$content = file_get_contents("path to pdf file"); // e.g. ("attachment/abc.pdf") 
$attachment = new Zend_Mime_Part($content); 
$attachment->type = 'application/pdf'; 
$attachment->disposition = Zend_Mime::DISPOSITION_ATTACHMENT; 
$attachment->encoding = Zend_Mime::ENCODING_BASE64; 
$attachment->filename = 'filename.pdf'; // name of file 

$mail->addAttachment($attachment);     

$mail->send(); 
+0

спасибо, это работает. имеет значение, что вы также изменили порядок той части, где я кодирую вложение pdf (это происходит после установки темы, addTo и электронного органа), или важно только ENCODING? –

+1

нет, порядок не имеет значения .. вопрос о ENCODING и вложения-> –