2012-05-31 3 views
2

У меня есть форма, которая отправляется по электронной почте владельцу магазина. Ничего необычного, просто куча полей ввода и полей выбора.Magento отправить сообщение с CSV

Я пытаюсь превратить это в файл CSV, который прикрепляется к письму.

В моем контроллере, у меня есть:

public function postAction() { 
    $post = $this->getRequest()->getPost(); 
    if ($post) { 
     #Mage::log($post,null,'tmp.log'); 

     #not using this at the moment... 
     $postObject = new Varien_Object(); 
     $postObject->setData($post); 


     $file = fopen('temp/temp.csv','w+'); 

     foreach($post as $sections) { 
      fputcsv($file, $sections); 
     }; 

     fclose($file); 

     $mailTemplate = Mage::getModel('core/email_template')->loadDefault('training_email_template'); 
     $mailTemplate->setSenderName('Joe Schmoe'); 
     $mailTemplate->setSenderEmail('[email protected]'); 
     $mailTemplate->setTemplateSubject('Form Submission'); 
     $attachment = $mailTemplate->getMail()->createAttachment($file); 
     $attachment->filename = 'file.csv'; 

     $mailTemplate->send(
      '[email protected]', 
      Mage::getStoreConfig(self::XML_PATH_EMAIL_SENDER), 
      $post 
     ); 
    } 
} 

Теперь сам файл будет создан, я могу открыть temp.csv просто отлично, и это выглядит, как предполагается. Тем не менее, прикрепленный файл пуст или (когда я пробовал несколько других вещей) кодирование было бы все неудобным ... явно не в надлежащем формате.

Почувствуйте, что я просто пропустил что-то простое здесь ... у кого-нибудь есть совет?

ответ

4

Вы отправляете файл ресурса в качестве параметра в createAttachment(). Это должна быть строка. Попробуйте это:

$mailTemplate->getMail()->createAttachment(
    file_get_contents('temp/temp.csv'), 
    Zend_Mime::TYPE_OCTETSTREAM, 
    Zend_Mime::DISPOSITION_ATTACHMENT, 
    Zend_Mime::ENCODING_BASE64, 
    'file.csv' 
); 

Вот документация Zend_Mail

/** 
* Creates a Zend_Mime_Part attachment 
* 
* Attachment is automatically added to the mail object after creation. The 
* attachment object is returned to allow for further manipulation. 
* 
* @param string   $body 
* @param string   $mimeType 
* @param string   $disposition 
* @param string   $encoding 
* @param string   $filename OPTIONAL A filename for the attachment 
* @return Zend_Mime_Part Newly created Zend_Mime_Part object (to allow 
* advanced settings) 
*/ 
public function createAttachment($body, 
           $mimeType = Zend_Mime::TYPE_OCTETSTREAM, 
           $disposition = Zend_Mime::DISPOSITION_ATTACHMENT, 
           $encoding = Zend_Mime::ENCODING_BASE64, 
           $filename = null) 
+0

Я искал во всем для дока на этой функции ... я не Google сегодня. Благодаря! – pspahn

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