Đối với một dự án B2E, chúng tôi cần một đường cho một cửa hàng 1.9.X Magento để xác định, mà mail cho một tên miền cụ thể (z.B. @ keinemails.com) Không nên gửi.
Kể từ khi chúng tôi SMTP-Pro-mở rộng có của ASchroder trong sử dụng, được nó để thích ứng này gần, để có được những kết quả mong muốn.
Trong bước đầu tiên chúng ta hãy ứng dụng / code / local / Aschroder / SMTPPro / mẫu / Email / template.php
Ở đây chúng ta thêm trước
/** * Gửi mail đến người nhận
và đằng sau
lớp Aschroder_SMTPPro_Model_Email_Template kéo dài Mage_Core_Model_Email_Template {
sau một mã
bảo vệ $ _avoidedDomains = array('Keinemails.com', 'Auchkeinemails.com'); bảo vệ chức năng isPreventForDomain($e-mail, $lĩnh vực) { cho mỗi ($lĩnh vực như $ miền) { $pos = strpos($e-mail, $miền, strlen($e-mail) - strlen($miền)); nếu ($pos === sai) tiếp tục; nếu ($pos == 0 || $e-mail[(int) $pos - 1] == "@" || $e-mail[(int) $pos - 1] == ".") trở thành sự thật; } trả về false; }
hơn nữa đằng sau
public function gửi($e-mail, $tên = null, mảng $ biến = array()) {
và trước
$_helper = Mage::người giúp việc('Smtppro');
mã này
$email = array_values((mảng)$e-mail); $= SentEmails mảng();
cuối cùng bởi
$_helper = Mage::người giúp việc('Smtppro');
nhưng mã này
cho mỗi($email như $ emailValue){ nếu($điều này->isPreventForDomain($giá trị email, $điều này->_avoidedDomains)){ pháp sư::đăng nhập(sprintf("Chúng tôi không gửi email đến% s", $giá trị email), sai, 'Not_sent_email.log', thật); tiếp tục; } $sentEmails[] = Giá trị Email $; } nếu(đếm($sentEmails) == 0) trả về false; $email = $ sentEmails;
Vì thế, rằng tất cả chúng ta cùng nhau có những điều sau đây
lớp Aschroder_SMTPPro_Model_Email_Template kéo dài Mage_Core_Model_Email_Template { bảo vệ $ _avoidedDomains = array('Keinemails.com', 'Auchkeinemails.com'); bảo vệ chức năng isPreventForDomain($e-mail, $lĩnh vực) { cho mỗi ($lĩnh vực như $ miền) { $pos = strpos($e-mail, $miền, strlen($e-mail) - strlen($miền)); nếu ($pos === sai) tiếp tục; nếu ($pos == 0 || $e-mail[(int) $pos - 1] == "@" || $e-mail[(int) $pos - 1] == ".") trở thành sự thật; } trả về false; } /** * Gửi mail đến người nhận * * mảng @ param|string $ email E-mail(S) * mảng @ param|chuỗi|rỗng $ name tên người nhận(S) * mảng @ param biến $ biến mẫu * boolean @return **/ public function gửi($e-mail, $tên = null, mảng $ biến = array()) { $email = array_values((mảng)$e-mail); $= SentEmails mảng(); $_helper = Mage::người giúp việc('Smtppro'); cho mỗi($email như $ emailValue){ nếu($điều này->isPreventForDomain($giá trị email, $điều này->_avoidedDomains)){ pháp sư::đăng nhập(sprintf("Chúng tôi không gửi email đến% s", $giá trị email), sai, 'Not_sent_email.log', thật); tiếp tục; } $sentEmails[] = Giá trị Email $; } nếu(đếm($sentEmails) == 0) trả về false; $email = $ sentEmails; // Nếu nó không được kích hoạt, chỉ trả lại kết quả mẹ. nếu (!$_người giúp đỡ->được kích hoạt()) { $_người giúp đỡ->đăng nhập('SMTP Pro không được kích hoạt, rơi trở lại tầng lớp phụ huynh); cha mẹ trở lại::gởi($e-mail, $Tên, $biến); } // Theo tầng lớp phụ huynh - ngoại trừ bổ sung trước và sau khi gửi các sự kiện
Trong trường hợp của chúng tôi, chúng tôi đã xác định hai lĩnh vực. lon Điều này tất nhiên chỉ là một.
Chúng tôi tạo ra theo cách này một log file (/var / log / not_sent_email.log) – Ở đây bạn có thể xem những mail đã bị từ chối khi.
Được sử dụng trong Magento Version 1.9 bình luận? bổ sung? Ghi chú? vui vẻ!