2012-10-04 71 views
4

這是我將代碼發送給一個收件人時正常工作的代碼,即如果我使用的是'[email protected]'(單個電子郵件),它工作正常。不過,我想包含第二個電子郵件ID以及[email protected]並編寫如下代碼:'[email protected],[email protected]'但這不起作用。如何向magento中的多個用戶發送電子郵件

讓我知道如何實現此功能?

$templateId = 1; 
$sender = array(
    'name' => 'swapnesh', 
    'email' => '[email protected]' 
); 
$store = Mage::app()->getStore(); 
$vars = array(
    'my_var' => 15, 
    'another_var' => 12 
); 
$translate = Mage::getSingleton('core/translate'); 

// Send your email 
Mage::getModel('core/email_template')->sendTransactional(
    $templateId, 
    $sender, 
    '[email protected],[email protected]', 
    'Recipient Name', 
    $vars, 
    $store->getId() 
); 
$translate->setTranslateInline(true); 

回答

8

答案是Mage_Core_Model_Email_Template::send()

你可以看到,$email$names參數可以是兩個數組。所以你的情況,如果是:

$recipients = [ 
    '[email protected]' => 'Recipient1 Name', 
    '[email protected]' => 'Recipient2 Name' 
]; 

Mage::getModel('core/email_template')->sendTransactional(
    $templateId, 
    $sender, 
    array_keys($recipients), 
    array_values($recipients), 
    $vars, 
    $store->getId() 
); 
+0

@Tim ..哇該工作fine..however一個值得關注的是我設置emailfrom後端所以可能不會完全2 ..如何解決這個問題? – swapnesh

+1

不用擔心,我使用$ recipients = Mage :: getStoreConfig(self :: XML_PATH_EMAIL_RECIPIENT); – swapnesh

-2

對於發送電子郵件到聯繫我們Magento的多個收件人,您可以托盤這種方式。

第一步,你可以找到應用程序/代碼/核心/法師/聯繫人/控制器這一行/ IndexController.php

$mailTemplate = Mage::getModel('core/email_template'); 
      /* @var $mailTemplate Mage_Core_Model_Email_Template */ 
      $mailTemplate->setDesignConfig(array('area' => 'frontend')) 
       ->setReplyTo($post['email']) 
       ->sendTransactional(
        Mage::getStoreConfig(self::XML_PATH_EMAIL_TEMPLATE), 
        Mage::getStoreConfig(self::XML_PATH_EMAIL_SENDER), 
        Mage::getStoreConfig(self::XML_PATH_EMAIL_RECIPIENT), 
        null, 
        array('data' => $postObject) 
       ); 

和修改,以吼叫:

   $recipients = Mage::getStoreConfig(self::XML_PATH_EMAIL_RECIPIENT); 
       if ($recipients) 
       { 
         $recipients = explode(";",$recipients); 
         if(count($recipients)) 
         { 
      foreach($recipients as $recipient) { 

      $mailTemplate = Mage::getModel('core/email_template'); 
      /* @var $mailTemplate Mage_Core_Model_Email_Template */ 
      $mailTemplate->setDesignConfig(array('area' => 'frontend')) 
       ->setReplyTo($post['email']) 
       ->sendTransactional(
        Mage::getStoreConfig(self::XML_PATH_EMAIL_TEMPLATE), 
        Mage::getStoreConfig(self::XML_PATH_EMAIL_SENDER), 
        $recipient, 
        null, 
        array('data' => $postObject) 
       ); 

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

和Don」 t忘記評論驗證在應用程序/代碼/核心/法師/聯繫人/ etc/system.xml javascript驗證碼

查找此行:

<recipient_email translate="label"> 
    <label>Send Emails To</label> 
    <frontend_type>text</frontend_type> 
<!--<validate>validate-email</validate>--> 
    <sort_order>10</sort_order> 
    <show_in_default>1</show_in_default> 
    <show_in_website>1</show_in_website> 
    <show_in_store>1</show_in_store> 
</recipient_email> 

給這條線<validate>validate-email</validate>

這個代碼註釋在Magento 1.7.0.2對我的作品。我希望這可以幫助您的問題..:d

不要忘記保存和清除緩存..

+0

Thx用於分享您的代碼+1 – swapnesh

+0

修改此答案中概述的文件將阻止應用未來的安全補丁。在生產系統中核心文件的修改不應該發生**。 –

相關問題