إطار zend: بعض مستخدمي البريد الإلكتروني يحصلون على أخطاء عند محاولة فتح مرفقات PDF؟

StackOverflow https://stackoverflow.com/questions/733040

سؤال

أواجه مشكلة غريبة وغير متأكد من كيفية استكشاف الأخطاء وإصلاحها. لقد قمت بإنشاء برنامج نصي في أحد أجهزة التحكم في إطار Zend الخاص بي التي تتيح لمسؤول تسجيل الدخول، قم بتحميل ملف 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();
}
هل كانت مفيدة؟

المحلول

يبدو (بالنسبة لي) أنه في هذا الخط من التعليمات البرمجية:

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

من المحتمل أنك تحتاج إلى إضافة معلومات رأس إضافية متوفرة في طريقة الإبداع لإطار Zend_Mail ::

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

العديد من مزودي البريد الإلكتروني الأكبر هم من الكماليات للالتزام الصارم بسياسة البريد الإلكتروني الجيدة (وجدت).

العب مع هذا وأنا متأكد من أنك ستحصل عليه للعمل.

نصائح أخرى

كما أتيحت لي هذه المشكلة.

أقترح عليك تتبع معلومات دفق الملف بطريقة أو بأخرى. كانت القضية مع تطبيقي أن $fileContents = file_get_contents($fileLocation); لم يكن المكالمة الحصول على دفق الملف بشكل صحيح، لذلك هذا هو المكان الذي قد تسقط فيه.

جرب هذا:

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

يجب أن تشاهد مجموعة من الرطانات حيث يخرج دفق الملف في var_dump تحت المفتاح:

["_content:protected"]=>
        string(37129) "%PDF-1.5
        etc...
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top