2016-10-12 7 views
0

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

Я тестировал это сам, и он работает, и приложения, поступающие в 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; 
} 

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

ответ

0

Так что проблема, в конце концов, была размером с файл. Моя ошибка в том, что вы не отправляете переменную $ _FILES.

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

 Смежные вопросы

  • Нет связанных вопросов^_^