添加附件以订购电子邮件+ Magento

时间:2011-07-12 10:24:21

标签: email magento attachment

我需要在客户下订单时将文件附加到Magento发送的电子邮件中。

此附件可以是PDF,HTML或简单的TXT,并且必须包含订单摘要(SKU,数量,单价,总价)。

我怎样才能实现这一目标?

提前致谢!

1 个答案:

答案 0 :(得分:12)

解决方案并不复杂,尽管您需要一些时间来实现它。我将简要解释所需的所有步骤。

主要步骤是:

  1. 在订单邮件中撰写附件并将其传递给邮件程序
  2. 将其转换为电子邮件模板
  3. 将其添加到以附件形式发送的实际信件
  4. 1)您需要重写Mage_Sales_Model_Order课程。覆盖该类中的`sendNewOrderEmail()'方法。

    您需要撰写要发送给客户的附件。将原始的sendNewOrderEmail()方法源代码复制到覆盖方法中,并将以下行放在$mailer->send()之前(对于我们的示例,我们将采用简单的情况 - 我们将发送一个文本文件,仅包含Grand订单总数,附件将命名为“summary.txt”)

    $fileContents = "Hello, here is the copy of your invoice:\n";
    $fileContents .= sprintf("Grand total: %.2f", $this->getGrandTotal()) . "\n";
    $fileContents .= "Thank you for your visit!";
    $fileName = 'summary.txt';
    $mailer->addAttachment($fileContents, $fileName);
    

    2)重写Mage_Core_Model_Email_Template_Mailer - 添加方法addAttachment($fileContents, $fileName),将附加的附件添加到受保护变量,存储附件数组。

    在此课程中覆盖send()方法。在该方法中,您需要将附件数组传递给发送的每个电子邮件模板。例如。添加像

    这样的行
    $emailTemplate->setAttachments($this->getAttachments());
    
    在行$emailTemplate->setDesignConfig...

    之前

    3)重写Mage_Core_Model_Email_Template

    添加方法setAttachments($attachments),必须将传入附件设置为某个受保护变量。

    在此课程中覆盖send()方法。在该方法中,您需要向已发送的信件添加附件。把这些行放在

    之类
    foreach ($this->getAttachments() as $atInfo) {
        $attachment = $mail->createAttachment($atInfo['fileContents']);
        $attachment->filename = $atInfo['fileName'];
    }
    

    $mail->send()之前。

    这就是全部。对于Magento开发人员来说,完成这项任务真的不是很难。它只需要一些时间来编写内容,重写类和完成接口。