Pour un projet B2E, nous avions besoin d'un moyen pour un 1.9.x boutique Magento pour définir, que le courrier à un domaine particulier (EX.. @ keinemails.com) ne doit pas être envoyé.
Puisque nous SMTP-Pro-Extension ont des ASchroder en cours d'utilisation, était-il d'adapter cette proximité, pour obtenir le résultat souhaité.
Dans la première étape, nous prenons l'application / code / local / Aschroder / SMTPPro / Modèle / Courriel / template.php
Ici, nous ajoutons avant
/** * Envoyez un mail au destinataire
et derrière
étend la classe Aschroder_SMTPPro_Model_Email_Template Mage_Core_Model_Email_Template {
folgenden Code ein
protected $ _avoidedDomains = array('Keinemails.com', 'Auchkeinemails.com'); fonction protégée isPreventForDomain($e-mail, $domaines) { foreach ($domaines comme domaine $) { $pos = strpos($e-mail, $domaine, strlen($e-mail) - strlen($domaine)); si ($pos === faux) continuer; si ($pos == 0 || $e-mail[(int) $pos - 1] == "@" || $e-mail[(int) $pos - 1] == ".") return true; } return false; }
plus loin derrière
envoyer la fonction publique($e-mail, $name = null, tableau variables $ = array()) {
et avant
$_helper = Mage::assistant('Smtppro');
ce code
$emails = array_values((gamme)$e-mail); $= Array sentEmails();
enfin par
$_helper = Mage::assistant('Smtppro');
encore ce code
foreach($e-mails que $ emailValue){ si($ce->isPreventForDomain($valeur e-mail, $ce->_avoidedDomains)){ Mage::enregistrer(sprintf("Nous n'envoyons pas de courrier électronique à% s", $valeur e-mail), faux, 'Not_sent_email.log', vrai); continuer; } $sentEmails[] = $ Valeur Email; } si(compter($sentEmails) == 0) return false; $emails = $ sentEmails;
Si, que nous tous ensemble avons les éléments suivants
étend la classe Aschroder_SMTPPro_Model_Email_Template Mage_Core_Model_Email_Template { protected $ _avoidedDomains = array('Keinemails.com', 'Auchkeinemails.com'); fonction protégée isPreventForDomain($e-mail, $domaines) { foreach ($domaines comme domaine $) { $pos = strpos($e-mail, $domaine, strlen($e-mail) - strlen($domaine)); si ($pos === faux) continuer; si ($pos == 0 || $e-mail[(int) $pos - 1] == "@" || $e-mail[(int) $pos - 1] == ".") return true; } return false; } /** * Envoyez un mail au destinataire * * @param array|$ string email E-mail(s) * @param array|chaîne|null Nom du récepteur $ name(s) * tableau @param variables du modèle de variables $ * booléen @return **/ envoyer la fonction publique($e-mail, $name = null, tableau variables $ = array()) { $emails = array_values((gamme)$e-mail); $= Array sentEmails(); $_helper = Mage::assistant('Smtppro'); foreach($e-mails que $ emailValue){ si($ce->isPreventForDomain($valeur e-mail, $ce->_avoidedDomains)){ Mage::enregistrer(sprintf("Nous n'envoyons pas de courrier électronique à% s", $valeur e-mail), faux, 'Not_sent_email.log', vrai); continuer; } $sentEmails[] = $ Valeur Email; } si(compter($sentEmails) == 0) return false; $emails = $ sentEmails; // Si ce n'est pas activé, il suffit de retourner le résultat parent. si (!$_assistant->est autorisé()) { $_assistant->enregistrer(« SMTP Pro n'est pas activé, revenir à la classe parente); retourner parent::envoyer($e-mail, $nom, $des variables); } // Comme par classe parente - sauf ajout d'avant et après l'envoi d'événements
Dans notre cas, nous avons défini deux domaines. Cela ne peut évidemment être un.
Nous créons ainsi un fichier journal (/var / log / not_sent_email.log) – Ici vous pouvez voir les adresses électroniques ont été rejetées lorsque.
Utilisé dans la version Magento 1.9 Remarques? Ajouts? Remarques? Volontiers!