Magento:带PDF附件的自定义电子邮件模板

时间:2014-01-27 06:15:21

标签: magento email pdf

我已经实施了“完整产品升级”页面,其中包含所有类别的所有产品(大约200种产品,在添加新产品时有所不同)。这是一种表格格式,只有两列:

  1. 项目名称
  2. 价格
  3. 我已经用所有这200种产品实现了动态生成pdf。

    现在我的要求是将此pdf通过电子邮件发送到指定的电子邮件地址。我怎么能用magento做什么?我是否需要使用pdf附件创建新的电子邮件模板?

    请提出最佳解决方案。

1 个答案:

答案 0 :(得分:0)

您必须在位置

下创建新的电子邮件模板

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);