Вложения электронной почты из внешних источников не работают

#php #email #gmail #email-attachments #magento-1.8

#php #Адрес электронной почты #gmail #вложения электронной почты #magento-1.8

Вопрос:

Недавно я создал страницу на нашем сайте, где пользователи могут загружать изображения и отправлять их по электронной почте на адрес электронной почты, настроенный специально для хранения загруженных документов.

Я проверил это сам, и это работает, и вложения поступают в gmail, как и ожидалось.

Однако всякий раз, когда кто-то извне использует эту функцию, вложение в электронном письме недоступно или не может быть загружено, когда мы пытаемся его открыть.

Код разделен на 2 файла, контроллер и помощник. Вот код (ради экономии места я удалил все проверки на ошибки, но в реальном коде все они все еще на месте и не обнаруживают никаких ошибок вообще):

контроллер

 $helper = [GET HELPER];
/** Upload the file to a temp location so that we can attach it to an email */
$uploader = new Varien_File_Uploader('filename');
$uploader->setAllowedExtensions(array(
    'image/jpeg',
    'image/jpg',
    'image/png',
    'application/pdf'
))
    ->setAllowRenameFiles(true)
    ->setFilesDispersion(false);
$path = $helper->getFileStorageLocation(); // Will store files in /tmp

if (!is_dir($path))
{
    mkdir($path, 0775, true);
}
$uploader->save($path, $_FILES['filename']['name']);

$result = $helper->sendMail($_FILES['filename']['name']);

if ($result)
{
    $uploadSuccess = true;
    /** Remove the temp file */
    unlink($path . DS . $_FILES['filename']['name']);
}
  

помощник

 /** Declare variables */
$order = Mage::getModel('sales/order')->load($orderId);
$file_incremented_id = $order->getIncrementId();
$copyTo = $this->getCopyTo();
$copyFrom = $this->getCopyFrom();
$subject = 'proof of upload for ' . $file_incremented_id;
$copyTo = explode(',', $copyTo);
$body = '<span>Please see attachment</span>';
$file = $this->getFileStorageLocation() . DS . $filename; // function receives filename from whatever is calling it
$attachment = file_get_contents($file);
$extension = pathinfo($file, PATHINFO_EXTENSION);

if (!$copyTo)
{
    return false;
}

$mail = Mage::getModel('core/email_template');
$mail->setSenderName('Uploader');
$mail->setSenderEmail($copyFrom);
$mail->setTemplateSubject($subject);
$mail->setTemplateText($body);
$mail->getMail()->createAttachment(
    $attachement,
    Zend_Mime::TYPE_OCTETSTREAM,
    Zend_Mime::DISPOSITION_ATTACHMENT,
    Zend_Mime::ENCODING_BASE64,
    $file_incremented_id . '.' . $extension // Set order number as file name
);

try
{
    $mail->send($copyTo);
    return true;
}
catch (Exception $e)
{
    return false;
}
  

Может ли кто-нибудь увидеть что-нибудь, что может вызвать проблему, или подумать о том, что это может быть основано на моем объяснении настройки?

Ответ №1:

Итак, проблема, в конце концов, заключалась в размере файла. Я виноват в том, что не разместил переменную $ _FILES.

Я увидел это немного позже, и переменная имела error = 1, что означает, что размер файла был больше, чем разрешенный max_upload_filesize в php.ini