2016-06-24 3 views
0

Ich weiß, es funktioniert nicht, aber wie kann ich $ salesData und $ salesData2 in die Funktion zum Senden von E-Mails einfügen?E-Mail-Funktion und Argumente senden - Zend-Fehler "Betreff zweimal gesetzt"

$salesData['email'] = Mage::getStoreConfig('trans_email/ident_custom3/email'); 
$salesData['name'] = Mage::getStoreConfig('trans_email/ident_custom3/name'); 
$salesData2['email'] = Mage::getStoreConfig('trans_email/ident_custom4/email'); 
$salesData2['name'] = Mage::getStoreConfig('trans_email/ident_custom4/name'); 

Gibt es eine Möglichkeit, so etwas zu tun?

$emailTemplate->send($salesData && $salesData2, $product->getStoreId(), $emailTemplateVariables); 

Scheint so einfach, aber mein Gehirn funktioniert heute nicht. Das obige funktioniert nicht.

Ich habe auch versucht, ein foreach wie so:

$emails = (Mage::getStoreConfig('trans_email/ident_custom4/email')) && (Mage::getStoreConfig('trans_email/ident_custom3/email')); 

foreach ($emails as $email) $emailTemplate->send($email, $product->getStoreId(), $emailTemplateVariables); 

Voll Methode:

private function _sendStatusMail($product) 
    { 
     $emailTemplate = Mage::getModel('core/email_template'); 
     $emailTemplate->loadDefault('elic_productnotification_tpl'); 
     $emailTemplate->setTemplateSubject('Product has been disabled'); 

     $salesData['email'] = Mage::getStoreConfig('trans_email/ident_custom3/email'); 
     $salesData['name'] = Mage::getStoreConfig('trans_email/ident_custom3/name'); 
     $salesData2['email'] = Mage::getStoreConfig('trans_email/ident_custom4/email'); 
     $salesData2['name'] = Mage::getStoreConfig('trans_email/ident_custom4/name'); 

     $emailTemplate->setSenderName($salesData['name']); 
     $emailTemplate->setSenderEmail($salesData['email']); 
     $emailTemplate->setSenderName($salesData2['name']); 
     $emailTemplate->setSenderEmail($salesData2['email']); 

     $emailTemplateVariables['style_number'] = $product->getElicStyle(); 
     $emailTemplateVariables['frame_color'] = $product->getAttributeText('frame_color'); 
     $emailTemplateVariables['size']   = $product->getAttributeText('size'); 
     $emailTemplateVariables['elic_color'] = $product->getAttributeText('elic_color'); 
     $emailTemplateVariables['store_name']  = Mage::getModel('core/store')->load($product->getStoreId())->getName(); 
     $emailTemplateVariables['product_name'] = Mage::getModel('catalog/product')->load($product->getId())->getName(); 
     $emailTemplateVariables['product_sku'] = $product->getSku(); 
     $emailTemplateVariables['dates']   = date("F jS Y h:i:sA", strtotime('-7 hours')); 

     $email = (Mage::getStoreConfig('trans_email/ident_custom3/email')); 
     foreach ($emails as $email) $emailTemplate->send($email, $product->getStoreId(), $emailTemplateVariables); 
    } 

Antwort

0

Sie zwei Arrays mit einem logical AND&& nicht verschmelzen können.

Verwenden Sie stattdessen zwei Schleifen statt:

$emailsA = Mage::getStoreConfig('trans_email/ident_custom4/email'); 
$emailsB = Mage::getStoreConfig('trans_email/ident_custom3/email'); 

foreach ($emailsA as $email) $emailTemplate->send($email, $product->getStoreId(), $emailTemplateVariables); 
foreach ($emailsB as $email) $emailTemplate->send($email, $product->getStoreId(), $emailTemplateVariables); 

Extract doppelten Code in Funktionen in Ihrem Ermessen.

+0

Wirklich? Das könnte das sein wonach ich suche und ich sollte das wissen ... es scheint logisch. Lass es mich schnell testen. – thismethod

+0

Ich habe eine Fehlermeldung erhalten: Warnung: Es wurde ein ungültiges Argument für foreach() übergeben. – thismethod

0

So etwas könnte helfen.

function mail_walk($name,$body,$subject,$email) { 
$emailTemplate = Mage::getModel('core/email'); 
$emailTemplate->setFromName($name); 
$emailTemplate->setBody($body); 
$emailTemplate->setSubject($subject); 
$emailTemplate->setType('html'); 
$emailTemplate->setToEmail($email); 
$emailTemplate->send(); 
} 

$salesData[0]['name'] = Mage::getStoreConfig('trans_email/ident_custom3/name'); 
$salesData[0]['email'] = Mage::getStoreConfig('trans_email/ident_custom3/email'); 
$salesData[1]['name'] = Mage::getStoreConfig('trans_email/ident_custom4/name'); 
$salesData[1]['email'] = Mage::getStoreConfig('trans_email/ident_custom4/email'); 

foreach ($salesData as $data) { 
mail_walk($data['name'],'email body here...','Subject in here...',$data['email']); 
} 
+0

Danke, lassen Sie mich einen Blick darauf werfen, was Sie hier getan haben. =] – thismethod

+0

Danke für das Teilen, ich habe bereits eine private Funktion, die ich behalten möchte. Das Problem ist auf dem Backend/Admin ... die E-Mail-Adressen werfen und Fehler wegen der Explosion. Zend sagt "Subject set double" und es feuert nicht. – thismethod

+0

Ich habe die volle Funktion oben gepostet. Also versuche ich an dieser Stelle die Nacharbeit zu minimieren. – thismethod