我有一个表单可以通过电子邮件发送给商店所有者。没什么好看的,只是一堆输入字段和选择字段。
我正在尝试将其转换为附加到电子邮件的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('eat@joes.com');
$mailTemplate->setTemplateSubject('Form Submission');
$attachment = $mailTemplate->getMail()->createAttachment($file);
$attachment->filename = 'file.csv';
$mailTemplate->send(
'store@owner.com',
Mage::getStoreConfig(self::XML_PATH_EMAIL_SENDER),
$post
);
}
}
现在文件本身被创建,我可以打开temp.csv就好了,看起来应该是这样。然而,附加的文件是空的或(当我尝试其他一些东西时)编码将是完全不可能的......显然不是正确的格式。
感觉我在这里只是遗漏了一些简单的东西......有人有什么建议吗?
答案 0 :(得分:5)
您正在将文件资源作为参数发送到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)