2011-07-12 18 views
4

クライアントが注文したときにMagentoが送信するメールにファイルを添付する必要があります。注文メールに添付ファイルを追加する+ Magento

この添付ファイルは、PDF、HTML、または単純なTXTのいずれでもかまいません。また、注文の概要(SKU、数量、単価、合計価格)が必要です。

これを行うにはどうすればいいですか?

ありがとうございます!

答えて

12

ソリューションはそれほど複雑ではありませんが、実装には時間がかかります。必要なすべてのステップについて簡単に説明します。

主な手順は次のとおりです

  1. それはテンプレート
  2. をメールで送信するためのメールであなたの添付ファイルを構成し、メーラー
  3. トランジットに渡し添付
として送信された実際の手紙にそれを追加します。

1)Mage_Sales_Model_Orderクラスを書き直す必要があります。そのクラスの `sendNewOrderEmail() 'メソッドを上書きしてください。

お客様に送信する添付ファイルを作成する必要があります。元のsendNewOrderEmail()メソッドのソースコードを上書きメソッドにコピーし、$mailer->send()の直前に次の行を挿入します(この例では簡単なケースを想定しています - 注文の総計のみを含むテキストファイルを送信します。 「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->setDesignConfig...

3)Mage_Core_Model_Email_Templateを書き換え前

$emailTemplate->setAttachments($this->getAttachments()); 

のような行を追加します。

追加の添付ファイルを保護された変数に設定する必要があるメソッドsetAttachments($attachments)を追加します。

このクラスのsend()メソッドを上書きします。その方法では、送信された手紙に添付ファイルを追加する必要があります。

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

の直前に$mail->send()行を入れてください。

それだけです。マゼンタの開発者にとってこの作業を行うことは、それほど難しいことではありません。コンテンツの作成、クラスの書き換え、インターフェイスの完成にはちょっと時間がかかります。

関連する問題