2011-02-16 3 views
0

프론트 엔드에서 양식 데이터를 받아서 데이터베이스에 저장하는 기본 모듈이 있습니다.Magento - 조치를 통해 전자 메일을 보내는 데 문제가 있습니다.

데이터를 성공적으로 저장 한 경우 전자 메일을 보내려합니다.

내가 이메일을 싶습니다

는 가게 주인에 요청하실 수 있습니다 :

내가 수행 한 시도하고이 작업을 얻기 위해 다음

응용 프로그램/코드/지역/에어로/Catalogrequest/등 /config.xml

<template> 
    <email> 
    <request_brochure_email translate="label" module="Aero_Catalogrequest"> 
     <label>Request a brochure</label> 
     <file>request_brochure.html</file> 
      <type>html</type> 
    </request_brochure_email> 
</email> 
</template> 

<default> 
    <Aero_Catalogrequest> 
    <sendemail> 
     <template>request_brochure_email</template> 
    </sendemail> 
    </Aero_Catalogrequest> 
</default> 

나는에 템플릿 파일을 만든 : 응용 프로그램 /locale/en_US/template/email/request_brochure.html

<p> 
    {{var data.fname}} 
    </p> 

그리고 이것은 내 IndexController.php 내 postAction이다

내 양식을 제출하면
public function postAction() 
{ 
    $post = $this->getRequest()->getPost(); 
    if ($post) { 
     $request = Mage::getModel('catalogrequest/catalogrequest'); 
     $data = $this->getRequest()->getPost(); 
     $data['time_added'] = now(); 
     $data['country'] = $data['country_id']; 
     $data['ip'] = $_SERVER['REMOTE_ADDR']; 
     $data['fname'] = ucwords($data['fname']); 
     $data['lname'] = ucwords($data['lname']); 
     $data['address1'] = ucwords(str_replace(",", " ",$data['address1'])); 
     $data['address2'] = ucwords(str_replace(",", " ",$data['address2'])); 
     $data['city'] = ucwords($data['city']); 
     if(empty($data['region'])){ 
      $data['state'] = Mage::getModel('directory/region')->load($data['state'])->getCode(); 
     } else { 
      $data['state'] = $data['region']; 
     } 
      $postObject = new Varien_Object(); 
      $postObject->setData($post); 

     // Validate 
     if(!$errors = $request->validate($data)){ 
      MAGE::getSingleton('core/session')->addError($errors); 
     } 


     // Add to database 
     try { 
      $mailTemplate = Mage::getModel('core/email_template'); 
      /* @var $mailTemplate Mage_Core_Model_Email_Template */ 
      $mailTemplate->setDesignConfig(array('area' => 'frontend')) 
       ->sendTransactional(
        Mage::getStoreConfig(self::XML_PATH_SAMPLE_EMAIL_TEMPLATE), 
        Mage::getStoreConfig(self::XML_PATH_EMAIL_SENDER), 
        Mage::getStoreConfig(self::XML_PATH_EMAIL_RECIPIENT), 
        null, 
        array('data' => $data) 
       ); 

      if (!$mailTemplate->getSentSuccess()) { 
       throw new Exception(); 
      } 

      $request->setData($data)->save(); 
      MAGE::getSingleton('core/session')->addSuccess($this->__('<h2>Thank you</h3> You can expect to receive your catalogue in 10-14 days.o. ')); 

      $translate->setTranslateInline(true); 
      $this->_redirect('*/*/thanks'); 

     } catch(Exception $e){ 
      MAGE::getSingleton('core/session')->addError('Sorry, we\'ve had some trouble saving your request'); 
      $this->_redirect('*/*/'); 
      return; 
     } 

    } 
    return; 
} 

는, 데이터가 이메일 주소로 전송되지 않습니다 내가 관리자로 구성한 사람

내가 뭘 잘못하고 있는지 알 수있는 사람이 있습니까?

감사

난 당신이 주제를 설정할 필요가 있다고 생각
+0

오류 메시지가 나타나면 $ e-> getMessage()를 포착하여 여기에 게시 할 수 있습니까? –

답변

4

, 그렇지 않으면 당신은 통과하지 않습니다

public function isValidForSend() 
{ 
    return !Mage::getStoreConfigFlag('system/smtp/disable') 
     && $this->getSenderName() 
     && $this->getSenderEmail() 
     && $this->getTemplateSubject(); 
} 

(Mage_Core_Model_Email_Template)

그래서, 이메일 템플릿에 추가 : <[email protected] The subject of email @-->

희망하는 사람

+0

Ok 이메일 템플릿에 누락 된 설정을 추가했습니다. 문제는 전자 메일 메시지의 실제 양식 필드가 모두 내가 게시 한 실제 입력이 아니라 '배열'로 반환된다는 것입니다. 어떤 아이디어? – terrid25

0

좋아, 그래서 작동하도록, 나는 대체했다 :

array('data' => $data) 

array('data' => $postObject) 

으로 모든 이제 완벽하게 전송!

고맙습니다 모두

관련 문제