2009-04-09 6 views
1

私は奇妙な問題を抱えており、トラブルシューティングの方法がわかりません。私は管理者がログインし、PDFをアップロードし、メーリングリストに登録されているすべての人に添付ファイルとして送信することを許可するZend Frameworkコントローラの1つにスクリプトを作成しました。問題は、PDFアタッチメントを開くことができず、ファイルが壊れていると報告するユーザーがいることです。私はこれがAOLユーザーにしか起こっていないと思うが、私は肯定的ではない。これまでにこの問題が発生しましたか?あるいは、AOLの問題ではないかもしれませんが、私のコードで何か問題がありますか?私はZFのバージョン1.6.0を使用しています、またZend Framework:PDF添付ファイルを開こうとすると、一部の電子メールユーザーにエラーが発生しますか?

は、ここで作業を行うコードです。それが適切かどうかはわかりません。

//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がファイルを開くことができなかったため、破損している可能性があります。そして、ええ、適切なMIMEタイプを持たないと、コンテンツがプログラムによってどのように解釈されるかに影響する可能性があります。時々、切り詰められた(そして破損した)本当に長いメッセージとして表示されることがあります。 – jerebear

+0

私はMIME標準についてもう少し詳しく読んだので、なぜこの問題が起こっているのでしょうか。特定のPDF MIMEのものに追加する必要があることを示すコードを投稿します。ご協力いただきありがとうございます! – Andrew

0

この問題もありました。

何とかファイルストリーム情報をトレースすることをお勧めします。私のアプリの問題は、$fileContents = file_get_contents($fileLocation);コールがファイルのストリームを正しく取得していなかったためです。これが落ちている可能性があります。

ことは、これを試してみてください:

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

あなたはファイルストリームは、キーの下のvar_dumpに出てくるちんぷんかんぷんの束が表示されるはずです。

["_content:protected"]=> 
     string(37129) "%PDF-1.5 
     etc... 
関連する問題