2009-04-09 11 views
1

이상한 문제가있어서 문제를 해결하는 방법을 모르겠습니다. 관리자가 로그인하여 PDF를 업로드하고 메일 링리스트에 가입 한 모든 사람에게 첨부 파일로 보낼 수있는 Zend Framework 컨트롤러 중 하나에서 스크립트를 만들었습니다. 문제는 일부 사용자가 PDF 첨부 파일을 열 수 없으며 파일이 손상되었다고보고합니다. 나는 이것이 AOL 사용자들에게만 일어나고 있다고 생각하지만 나는 긍정적이지 않다. 전에이 문제가 발생 했습니까? 또는 AOL의 문제는 아니지만 코드에 문제가 있습니까? 또한젠드 프레임 워크 : 일부 이메일 사용자는 PDF 첨부 파일을 열려고 할 때 오류가 발생합니까?

, 내가 ZF 버전 1.6.0을 사용하고 있습니다 :

는 다음 작업을 수행하는 코드입니다. 관련성이 있는지 확실하지 않습니다.

//assuming the form is valid: 
$table = new Subscribers(); 
$rowset = $table->fetchAll(); 
foreach ($rowset as $row) { 
    $mail = new Zend_Mail(); 
    $mail->setBodyText($form->getElement('body')->getValue()) 
     ->setFrom('[email protected]', 'Weekly Update') 
     ->addTo($row->email) 
     ->setSubject($form->getElement('subject')->getValue()); 
    $fileLocation = $form->getElement('attachment')->getValue(); 
    $fileContents = file_get_contents($fileLocation); 
    $attachment = $mail->createAttachment($fileContents); 
    $attachment->filename = str_replace(Zend_Registry::get('config')->downloadsLocation . '/', '', $fileLocation);   
    $mail->send(); 
} 
+0

당신은 메시지를 제공하기 위해 해당 사용자를 필요 원본을 누른 다음 사서함으로 이동하고 열 수 있는지 확인하십시오. 첨부 파일의 크기에 따라 문제가 발생할 수 있습니다. – Till

답변

1

그것은 그 코드 줄에서 (나에게) 나타납니다

$attachment = $mail->createAttachment($fileContents); 

당신에게 Zend_Mail 프레임 워크 :

의 createAttachment 방법에서 사용할 수있는 추가 헤더 정보를 추가 할 가능성이 필요
$attachment = $mail->createAttachment($fileContents, 
         Zend_Mime::DISPOSITION_INLINE); 

많은 전자 메일 공급자는 좋은 전자 메일 정책을 엄격하게 준수하기 위해 제작되었습니다.

이걸 가지고 놀면 제대로 작동 할 것입니다.

+0

파일이 "손상"될 수 있습니까? 그것이 내 사용자가 파일을 열려고 할 때 내게 말한 것입니다. 파일이 손상되었습니다. – Andrew

+0

오류는 일반적으로 "Adobe가 파일을 열 수 없으며 손상되었을 수 있습니다."라고 말합니다. 그리고 네, 적절한 마임 타입을 가지지 않으면 콘텐츠가 프로그램에 의해 어떻게 해석되는지에 영향을 줄 수 있습니다. 때로는 잘리지 않는 (손상된) 메시지를 볼 수 있습니다. – jerebear

+0

MIME 표준에 대해 좀 더 알아 보았습니다. 이제이 문제가 발생하는 이유에 대한 답변이 훨씬 더 적절 해졌습니다. . 특정 PDF MIME 항목에 추가해야 할 내용을 보여주기 위해 코드를 게시합니다. 당신의 도움을 주셔서 감사합니다! – Andrew

0

이 문제가 발생했습니다.

어떻게 든 파일 스트림 정보를 추적하는 것이 좋습니다. 내 응용 프로그램의 문제는 $fileContents = file_get_contents($fileLocation); 호출이 파일의 스트림을 제대로 가져 오지 못했기 때문에 떨어지는 것일 수 있습니다.

이 시도 : 파일 스트림을 위해서 var_dump에서 들어오는 곳

$mail = new Zend_Mail(); 
... 
var_dump($mail->send()); 

당신은 키에 횡설수설의 무리를 볼 수 :

["_content:protected"]=> 
     string(37129) "%PDF-1.5 
     etc...