用magento发邮件

Mag*_*Kid 6 magento

如何在magento中发送电子邮件在索引控制器中编写动作?

我的索引控制器;

public function postAction()
{           

    $post = $this->getRequest()->getPost();     
    if(!$post) exit;
    $translate = Mage::getSingleton('core/translate');
    $translate->setTranslateInline(false);
    try {
            $postObject = new Varien_Object();
            $postObject->setData($post);
            if (!Zend_Validate::is(trim($post['email']), 'EmailAddress')) {
                echo '<div class="error-msg">'.Mage::helper('contacts')->__('Please enter a valid email address. For example johndoe@domain.com.').'</div>';
                exit; 
            }
            $storeId = Mage::app()->getStore()->getStoreId();
            $emailId = Mage::getStoreConfig(self::XML_PATH_SAMPLE_EMAIL_TEMPLATE);
            $mailTemplate = Mage::getModel('core/email_template');              
            $mailTemplate->setDesignConfig(array('area'=>'frontend', 'store'=>$storeId))
                ->setReplyTo($post['email'])
                ->sendTransactional($templateId, $sender, $email, $name, $vars=array(), $storeId=null)

            if (!$mailTemplate->getSentSuccess()) {                 
                echo '<div class="error-msg">'.Mage::helper('contacts')->__('Unable to submit your request. Please, try again later.').'</div>';
                exit;
            }               
            $translate->setTranslateInline(true);
            echo '<div class="success-msg">'.Mage::helper('contacts')->__('Your inquiry was submitted and will be responded to as soon as possible. Thank you for contacting us.').'</div>';
            }   
            catch (Exception $e) {
            $translate->setTranslateInline(true);
            echo '<div class="error-msg">'.Mage::helper('contacts')->__('Unable to submit your request. Please, try again later.').$e.'</div>';
            exit;
        }       
}
Run Code Online (Sandbox Code Playgroud)

有什么不对..请帮我解决这个问题..提前致谢...

Sil*_*mer 31

如果您不需要模板,这是另一种方式.从控制器呼叫.

<?php
$body = "Hi there, here is some plaintext body content";
$mail = Mage::getModel('core/email');
$mail->setToName('John Customer');
$mail->setToEmail('customer@email.com');
$mail->setBody($body);
$mail->setSubject('The Subject');
$mail->setFromEmail('yourstore@url.com');
$mail->setFromName("Your Name");
$mail->setType('text');// You can use 'html' or 'text'

try {
    $mail->send();
    Mage::getSingleton('core/session')->addSuccess('Your request has been sent');
    $this->_redirect('');
}
catch (Exception $e) {
    Mage::getSingleton('core/session')->addError('Unable to send.');
    $this->_redirect('');
}
Run Code Online (Sandbox Code Playgroud)


Jos*_*osh 5

您调用sendTransactional()的方式看起来有些问题.首先,$ templateId未定义,看起来您实际上已将模板ID存储在$ emailId中.此外,$ sender,$ email和$ name未定义.你可以尝试这样的事情:

->sendTransactional($emailId, 'general', $post['email'], "Need a send to name here")
Run Code Online (Sandbox Code Playgroud)

只有在从getStoreConfig()调用中获得有效的模板ID时,才能使用此功能.您还需要正确设置姓氏参数.

可能还有其他问题,但无论如何这都是我注意到的.