Я оновив свій веб-сайт до 1.9.1, і тепер мої клієнти не отримують електронного листа з підтвердженням замовлення.
Я спробував надсилати через панель адміністратора, але нічого не відбувається, також не надходить електронний лист із оновленнями.
Я оновив свій веб-сайт до 1.9.1, і тепер мої клієнти не отримують електронного листа з підтвердженням замовлення.
Я спробував надсилати через панель адміністратора, але нічого не відбувається, також не надходить електронний лист із оновленнями.
Відповіді:
cron.sh
працює! Ми щойно провели цілий день, налагоджуючи це лише для того, щоб виявити, що Cron був неправильно налаштований.
Існує 2 способи надсилання листів з нашого магазину Magento 1.
Якщо ви хочете уникнути cron:
Відкрийте файл order.php за адресою
app / code / core / Mage / Продажі / Модель / Order.php
Рядок № 1356,1450,
змінити
//$mailer->setQueue($emailQueue)->send();
до:
$mailer-> send();
В app/design/frontend/base/default/template/checkout/success.phtml
: додайте наступний рядок Найкраща сторінка успіху для надсилання електронної пошти
$order = Mage::getModel('sales/order');
$incrementId = Mage::getSingleton('checkout/session')->getLastRealOrderId();
$order->loadByIncrementId($incrementId);
try{
$order->sendNewOrderEmail();
} catch (Exception $ex) {
echo "Email Not Sent...";
}
$customer = Mage::getSingleton('customer/session')->getCustomer();
$email = $customer->getEmail();
//End Email Sending
я видалив наступний код черги пошти з Template.php, потім я почав отримувати електронну пошту, коли замовлення розміщено замовником або коли я натискаю надіслати електронну пошту на панелі адміністратора "Вкладки" Продажі / Замовлення ".
Magento встановив електронний лист для замовлення, який надсилатиметься за розкладом, а не миттєвим повідомленням електронної пошти ... можливо, з причини виконання? Template.php і знайти спосіб встановити та запустити роботу розкладу, яку потрібно виконувати кожні 5 хвилин ...
Template.php знаходиться в => /app/code/core/Mage/Core/Model/Email/Template.php
if ($this->hasQueue() && $this->getQueue() instanceof Mage_Core_Model_Email_Queue) {
/** @var $emailQueue Mage_Core_Model_Email_Queue */
$emailQueue = $this->getQueue();
$emailQueue->setMessageBody($text);
$emailQueue->setMessageParameters(array(
'subject' => $subject,
'return_path_email' => $returnPathEmail,
'is_plain' => $this->isPlain(),
'from_email' => $this->getSenderEmail(),
'from_name' => $this->getSenderName(),
'reply_to' => $this->getMail()->getReplyTo(),
'return_to' => $this->getMail()->getReturnPath(),
))
->addRecipients($emails, $names, Mage_Core_Model_Email_Queue::EMAIL_TYPE_TO)
->addRecipients($this->_bccEmails, array(), Mage_Core_Model_Email_Queue::EMAIL_TYPE_BCC);
$emailQueue->addMessageToQueue();
return true;
}
Існує два рішення наступним чином:
Рішення-01: Використання cron
Система> Конфігурація> Додатково> Система> Cron
Типовими налаштуваннями є:
Перш за все, Magento 1.9+ повністю розраховує на роботу із cron для надсилання транзакційних електронних листів. Якщо раніше у вас не було налаштовано роботу Cron, вам доведеться це робити зараз.
Перш за все переконайтеся, що ви встановили завдання cron в адміністраторі Magento під
Система> Конфігурація> Додатково> Система> Cron
Типовими налаштуваннями є:
Створюйте розклади кожні 15 розкладів попереду на 20 пропущених, якщо не виконуватись протягом 15 Очищення історії кожні 10 років життя успіху 60 Життя історії відмов 600
Є люди, які пропонують змінити ці налаштування, але оскільки вони, здається, не можуть погодитися на найкращу комбінацію, я б краще залишити її такою, якою вона є.
Тоді вам потрібно зайти в панель управління хостингом і налаштувати завдання cron. У cPanel він знаходиться в розділі Advanced> Cron Jobs. Налаштуйте їх для запуску кожні п’ять хвилин і скористайтеся цією командою:
php -f /home/username/public_html/cron.php
Перевірте, чи вказаний вище шлях правильний і чи файл cron.php насправді є в корені вашої установки Magento (якщо ви щойно оновили, це має бути). Змініть ім'я користувача на правильний рахунок.
Тепер я спочатку помилився, дотримуючись порад розробників на xtento.com, які кажуть використовувати командний рядок wget: wget -O / dev / null -q http://www.YOURDOMAIN.com/PATH_TO_MAGENTO/cron. php
Рішення-02: Уникайте крона
Трансакційні електронні листи будуть надіслані миттєво.
//app/code/core/Mage/Sales/Model/Order.php Line#1356,1450
//$mailer->setQueue($emailQueue)->send(); Change To
$mailer->send();
app/design/frontend/base/default/template/checkout/success.phtml
//add following line Top success page for sending mail direct
// Start Send Emai Here......
$order = Mage::getModel('sales/order');
$incrementId = Mage::getSingleton('checkout/session')->getLastRealOrderId();
$order->loadByIncrementId($incrementId);
try{ $order->sendNewOrderEmail();}
catch (Exception $ex) { echo "Email Not Sent..."; }
$customer = Mage::getSingleton('customer/session')->getCustomer();
$email = $customer->getEmail();//End Email Sending
З Magento 1.9 всі електронні листи будуть чергатись та пізніше надсилатись через Cron.
Примітка до випуску Magento 1.9
Якщо ви хочете, щоб ваші електронні листи транзакцій надсилалися через Cron, ви можете встановити cron із системи > Конфігурація > Система на вкладці Cron АБО створити cron в Cpanel, направити його на ваш cron.sh або cron.php, що знаходиться у вашому кореневому каталозі Magento.
Просто встановіть розширення "SMTP Pro Email": http://www.magentocommerce.com/magento-connect/smtp-pro-email-free-custom-smtp-email.html
Заповніть свої спеціальні SMTP-дані та готово.
На це знадобилось два повних дні. Робота з Cron не потрібна, хоча якщо ви хочете, щоб завдання cron працювали, і ви не хочете робити вищезазначене, ви можете зробити наступне:
Після:
$isShellDisabled = (stripos(PHP_OS, ‘win’) === false) ? $isShellDisabled : true;
додати цей рядок коду:
$isShellDisabled = true;
На панелі C відкрийте розділ Cron Jobs
Створіть завдання cron, яке виконує таку команду кожні 15 хвилин:
php -f /home/USERNAME/public_html/domain.com/magento_folder/cron.php
У Magento 1.9.1.0 Magento додав нову функцію: вони зберігають електронну пошту замовлення у core_email_queue
таблиці для надсилання електронної пошти замовлень. Ми повинні встановити cron.php
вхідний сервер
cron.php
Файл встановити core_email_queue_send_all
в хрон таблиці розкладу. Коли крона виконує метод "send", викликаний з Mage_Core_Model_Email_Queue
. Вони відправляють пошту замовнику.
Отже, вище виправлення працює без будь-яких змін у файлі core.
Просто виконайте налаштування кронів на вашому сервері, як зазначено нижче, і тоді ви почнете отримувати пошти про продаж.
php -q /home/YOUR_USER_NAME/public_html/Path_to_cron.php
Використовуйте загальні налаштування як "*****"
Потрібно замінити YOUR_USER_NAME & Path_to_cron.php на ваш.
За допомогою n98-magerun я просто запускаю наступне:
n98-magerun sys:cron:run core_email_queue_send_all
Або час, якщо ви не хочете його запускати весь час:
watch -n 10 n98-magerun sys:cron:run core_email_queue_send_all
Це надсилає всі електронні листи в чергу кожні 10 секунд.
якщо ТІЛЬКИ електронний лист із замовленням не надсилається, це тому, що Magento чергає лише електронні листи із замовленнями та зберігає їх для відправки їх партіями. Якщо у вас немає налаштування Heartbeat Cron .., вони ніколи не залишать чергу Magento.
Ви бачите, що інші електронні листи Magento виходять, тому що їх надсилають безпосередньо від Magento на ваш демон. Черги Magento (наприклад, електронний лист із замовленням) навіть не передаються демону пошти, поки не запуститься Hearbeat Cron.
Щоб змусити їх виходити ... перейдіть на сторінку http://yourmagentodomain.com/cron.php та продовжуйте оновлювати цю сторінку кожні п’ять хвилин, і ви побачите, що електронні листи із замовленнями починають виходити. Cron Heartbeat повинен зробити це за вас. О, і коли ви переходите до цього файлу cron.php, сторінка повинна бути порожньою, тому не турбуйтеся ... вона запрацює.
Я прослідкував за базою знань, щоб налагодити її роботу: http://www.magentocommerce.com/knowledge-base/entry/ee1141-ce191-responsive-email#contact-info
У частині "Локалізація трансакційних електронних листів" після виконання попередніх інструкцій, копіювання в / en_UK нарешті отримали електронні листи в дорозі (включаючи ті, які раніше не надсилалися), ми також мали проблему з тим, що сторінка підтвердження замовлення не відображалася клієнтам на завершення. Це також було виправлено.
Наприклад, для мови en_GB вам потрібно буде скопіювати файли, розташовані за адресою:
app / locale / en_US / шаблон / електронна пошта
до місця розташування:
app / locale / en_GB / шаблон / електронна пошта
Якщо ваша поштова система (smtp, zend_mail) працює нормально; відключення mailQueue може вирішити вашу проблему.
/app/code/core/Mage/Core/Model/Email/Template.php
Зміна лінії 407
if ($this->hasQueue() && $this->getQueue() instanceof Mage_Core_Model_Email_Queue) {
до
if (false /\*$this->hasQueue() && $this->getQueue() instanceof Mage_Core_Model_Email_Queue\*/) {
Якщо у вас є розширення SMTPpro, спробуйте його відключити. І ще раз перевірте. Всі електронні листи працюють добре, і вам потрібно лише правильно налаштувати.
Кращий спосіб - це зробити копію програми / код / core / Mage / Core / Model / Email / Template / Mailer.php
До програми локальної папки / код / локальний / Mage / Core / Модель / Електронна пошта / Шаблон / Mailer.php
Потім прокоментуйте цей рядок у рядку 76
->setQueue($this->getQueue())
Тоді ти закінчиш. Не потрібно змінювати шаблон success.phtml. : D