magento的发送邮件有两种形式,直接发送邮件和邮件队列。
邮件发送的相关方法在
..\app\code\core\Mage\Core\Model\Email
直接发送邮件:
$mailTemplate = Mage::getModel('core/email_template');
$currentStoreId = Mage::app()->getStore()->getId();
$mailTemplate->setDesignConfig(array('area' => 'backend'))
->sendTransactional(
Mage::getStoreConfig(self::XML_PATH_DAILY_SALES_TEMPLATE),
Mage::getStoreConfig(self::XML_PATH_DAILY_SALES_IDENTITY),
Mage::getStoreConfig(self::XML_PATH_DAILY_SALES_RECEIVE_EMAIL),
null,
array(),
$currentStoreId
);
这样子就可以发送邮件了还可以用send()方法发送。
还有一种形式:
$templateId = Mage::getStoreConfig(self::XML_PATH_CAN_BUY_TEMPLATE);
$mailer = Mage::getModel('core/email_template_mailer');
$mailer->setSender(Mage::getStoreConfig(self::XML_PATH_CAN_BUY_IDENTITY));
$mailer->setStoreId($currentStoreId);
$mailer->setTemplateId($templateId);
$emailInfo = Mage::getModel('core/email_info');
$emailInfo->addTo($item->getEmailAddress(),ucwords($item->getCustomerName()));
$mailer->addEmailInfo($emailInfo);
$mailer->send();
队列发送:
$email = Mage::getModel('core/email_template');
$emailQueue = Mage::getModel('core/email_queue');
$emailQueue->setEntityId()
->setEntityType()
->setEventType()
->setIsForceCheck(false);
$email->setQueue($emailQueue);
$email->sendTransactional(
Mage::getStoreConfig(self::XML_PATH_HAS_SUBSCRIBE_TEMPLATE, $currentStoreId),
Mage::getStoreConfig(self::XML_PATH_HAS_SUBSCRIBE_IDENTITY, $currentStoreId),
$pm->getEmail(),
ucwords($pm->getFirstname()),
$param
);
先把邮件加入邮件队列再有magento的定时任务发送邮件。
邮件怎么添加附件?
$mailTemplate = Mage::getModel('core/email_template');
$attachmentFilePath = Mage::getBaseDir('var'). DS . 'excel' . DS . $filename;
if(file_exists($attachmentFilePath)){
$fileContents = file_get_contents($attachmentFilePath);
$attachment = $mailTemplate->getMail()->createAttachment($fileContents);
$attachment->filename = $filename;
}