Решение не очень сложное, хотя для его реализации потребуется некоторое время.Я дам краткое объяснение всех необходимых шагов.
Основные шаги:
- Составьте свое приложение в письме с заказом и передайте его отправителю
- Перейдите в шаблон электронной почты
- Добавьте его к фактическому письму, отправленному в виде вложения
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->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.Просто требуется некоторое время, чтобы составить содержимое, переписать классы и завершить интерфейсы.