【问题标题】:Magento: Custom email template with PDF attachmentMagento:带有 PDF 附件的自定义电子邮件模板
【发布时间】:2014-01-27 19:58:59
【问题描述】:

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

  1. 项目名称
  2. 价格

我已经用所有这 200 种产品实现了 pdf 的动态生成。

现在我的要求是将此 pdf 通过电子邮件发送到指定的电子邮件地址。我该如何处理magento?我需要创建带有 pdf 附件的新电子邮件模板吗?

请提出最佳解决方案。

【问题讨论】:

    标签: magento email pdf


    【解决方案1】:

    您必须在位置下创建一个新的电子邮件模板

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

    【讨论】:

    • 您在 SendTransactionalEmail() 中使用的 GetTransactionalSender() 函数在哪里
    猜你喜欢
    • 2014-02-10
    • 1970-01-01
    • 2014-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-31
    相关资源
    最近更新 更多