1

奇妙な問題が発生しており、トラブルシューティングの方法がわかりません。Zend Framework コントローラーの 1 つで、管理者がログインし、PDF をアップロードして、メーリング リストに登録している全員に添付ファイルとして送信できるようにするスクリプトを作成しました。問題は、一部のユーザーが、PDF 添付ファイルを開けない、ファイルが破損していると報告していることです。これは AOL ユーザーにのみ発生していると思いますが、私は肯定的ではありません。以前にこの問題に遭遇したことがありますか? それとも、AOL の問題ではなく、私のコードに何か問題があるのでしょうか?

作業を行うコードは次のとおりです。

また、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('weekly-update@email.com', '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();
}
4

2 に答える 2

1

(私には) このコード行では次のように見えます。

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

Zend_Mail フレームワークの createAttachment メソッドで利用可能な追加のヘッダー情報を追加する必要がある可能性があります::

$attachment = $mail->createAttachment($fileContents,
                        Zend_Mime::DISPOSITION_INLINE);

多くの大規模な電子メール プロバイダーは、優れた電子メール ポリシーを厳密に順守することに固執しています (私が見つけました)。

これをいじってみると、うまくいくと思います。

于 2009-04-09T06:41:04.447 に答える
0

私もこの問題を抱えていました。

どういうわけかファイルストリーム情報をトレースすることをお勧めします。私のアプリの問題は、$fileContents = file_get_contents($fileLocation);呼び出しがファイルのストリームを適切に取得していなかったため、これが失敗する可能性がある場所です。

これを試して:

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

次のキーの下のvar_dumpでファイルストリームが出力される、一連のぎこちないものが表示されるはずです。

["_content:protected"]=>
        string(37129) "%PDF-1.5
        etc...
于 2010-02-19T05:39:11.127 に答える