【发布时间】:2014-01-27 19:58:59
【问题描述】:
我已经实施了包含所有类别的所有产品的“完整产品列表”页面(大约有 200 种产品,在添加新产品时会有所不同)。这是表格格式,只有两列:
- 项目名称
- 价格
我已经用所有这 200 种产品实现了 pdf 的动态生成。
现在我的要求是将此 pdf 通过电子邮件发送到指定的电子邮件地址。我该如何处理magento?我需要创建带有 pdf 附件的新电子邮件模板吗?
请提出最佳解决方案。
【问题讨论】:
我已经实施了包含所有类别的所有产品的“完整产品列表”页面(大约有 200 种产品,在添加新产品时会有所不同)。这是表格格式,只有两列:
我已经用所有这 200 种产品实现了 pdf 的动态生成。
现在我的要求是将此 pdf 通过电子邮件发送到指定的电子邮件地址。我该如何处理magento?我需要创建带有 pdf 附件的新电子邮件模板吗?
请提出最佳解决方案。
【问题讨论】:
您必须在位置下创建一个新的电子邮件模板
1) app\locale\en_US\template\email\foldername/filename.html
2) 在模块 config.xml 中添加配置部分。例如:
<template>
<email>
<template_name module="NameSpace_ModuleName">
<label>Your Own Label</label>
<file>modulefolder/template_name.html</file>
<type>html</type>
</template_name>
</email>
</template>
3) 接下来,下面是向交易电子邮件添加附件的代码:
function GetTransactionalSender() {
return array(
'name' => Mage::getStoreConfig('trans_email/ident_support/name'),
'email' => Mage::getStoreConfig('trans_email/ident_support/email')
);
}
function SendTransactionalEmail($templateId, $recepientEmail, $recepientName, $vars, $storeId, $pdf_attachment = '') {
$status = false;
try {
$transactionalEmail = Mage::getModel('core/email_template')
->setDesignConfig(array('area' => 'frontend', 'store' => $storeId));
if (!empty($pdf_attachment) && file_exists($pdf_attachment)) {
$transactionalEmail
->getMail()
->createAttachment(
file_get_contents($pdf_attachment),
Zend_Mime::TYPE_OCTETSTREAM,
Zend_Mime::DISPOSITION_ATTACHMENT,
Zend_Mime::ENCODING_BASE64,
basename($pdf_attachment)
);
}
$transactionalEmail
->sendTransactional($templateId, GetTransactionalSender(), $recepientEmail, $recepientName, $vars);
$status = true;
} catch (Exception $e) { }
return $status;
}
$template_id = 1;
$to_email = 'user@domain.com';
$to_name = 'User Name';
$vars = array();
$store_id = 1
$pdf_file = '/full/path/to/my/file.pdf';
$sent = SendTransactionalEmail($template_id, $to_email, $to_name, $vars, $store_id, $pdf_file);
【讨论】: