Respostas:
cron.sh
está funcionando! Acabamos de passar um dia inteiro depurando isso apenas para descobrir que o cron estava configurado incorretamente.
Existem 2 métodos para enviar e-mails da nossa loja Magento 1.
Se você deseja evitar o cron:
Abra seu arquivo order.php em
app / code / core / Mage / Sales / Model / Order.php
Linha # 1356,1450,
mudança
//$mailer->setQueue($emailQueue)->send();
para:
$mailer-> send();
Em app/design/frontend/base/default/template/checkout/success.phtml
: adicione a seguinte linha Página de sucesso principal para o envio de email direto
$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
removi o seguinte código da fila de e-mails do Template.php e comecei a receber e-mails quando o pedido é feito pelo cliente ou quando clico em enviar e-mail na guia "Vendas / pedidos" do painel de administração.
O Magento havia configurado o e-mail do pedido para ser enviado pelo trabalho de agendamento em vez do e-mail instantâneo ... provavelmente por motivo de desempenho? (Não sei por que, sou muito novo no magento) ... no entanto, vou colocar esse código de volta o Template.php e encontre uma maneira de definir e executar o trabalho de agendamento a ser executado a cada 5 minutos ...
Template.php está localizado em => /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;
}
Há duas soluções da seguinte maneira:
Solução 01: Usando cron
Sistema> Configuração> Avançado> Sistema> Cron
As configurações padrão são:
Antes de tudo, o Magento 1.9+ depende completamente de tarefas cron para enviar e-mails transacionais. Se você não tinha tarefas cron configuradas corretamente antes, precisará fazê-lo agora.
Antes de tudo, verifique se você configurou tarefas cron no administrador do Magento em
Sistema> Configuração> Avançado> Sistema> Cron
As configurações padrão são:
Gere agendamentos a cada 15 agendamentos antecipados para 20 ausentes, se não executados em 15 dias.
Existem pessoas sugerindo que essas configurações devem ser alteradas, mas como elas parecem não concordar com a melhor combinação, prefiro deixá-las como estão.
Você precisará acessar o painel de controle da hospedagem e configurar os trabalhos cron. No cPanel, está em Avançado> Trabalhos Cron. Configure-os para serem executados a cada cinco minutos e use este comando:
php -f /home/username/public_html/cron.php
Verifique se o caminho acima está correto e se o arquivo cron.php está realmente lá na raiz da sua instalação do Magento (se você acabou de atualizar, deve estar). Mude o nome de usuário para a conta correta.
Agora, inicialmente cometi o erro de seguir o conselho dos desenvolvedores do xtento.com que dizem usar uma sequência de comandos wget: wget -O / dev / null -q http://www.YOURDOMAIN.com/PATH_TO_MAGENTO/cron. php
Solução 02: Evite cron
Os emails transacionais serão enviados instantaneamente.
//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
Com o Magento 1.9, todos os emails serão colocados na fila e posteriormente enviados pelo Cron.
Se você deseja que seus e-mails de transação sejam enviados pelo Cron, defina o cron em Sistema > Configuração > Sistema, na guia Cron OU crie o cron no Cpanel, direcione-o para o seu cron.sh ou cron.php localizado no diretório raiz do Magento.
Basta instalar a extensão "SMTP Pro Email": http://www.magentocommerce.com/magento-connect/smtp-pro-email-free-custom-smtp-email.html
Preencha com seus detalhes SMTP personalizados e pronto.
Levei dois dias inteiros para descobrir. Não são necessários trabalhos Cron, embora se você deseja que os trabalhos cron funcionem e não faça o acima, você pode fazer o seguinte:
Depois de:
$isShellDisabled = (stripos(PHP_OS, ‘win’) === false) ? $isShellDisabled : true;
adicione esta linha de código:
$isShellDisabled = true;
No painel C, abra a seção Tarefas Cron
Crie uma tarefa cron que execute o seguinte comando a cada 15 minutos:
php -f /home/USERNAME/public_html/domain.com/magento_folder/cron.php
No Magento 1.9.1.0, o Magento adicionou um novo recurso: Eles armazenam o email do pedido na core_email_queue
tabela para enviar o email dos pedidos. Temos que definir o cron.php
servidor
O cron.php
arquivo define a core_email_queue_send_all
tabela de agendamento no cron. Quando o crone executa o método "send" chamado from Mage_Core_Model_Email_Queue
. Eles enviam o correio para o cliente.
Portanto, a correção acima está funcionando sem nenhuma alteração no arquivo principal.
Basta fazer a configuração do cron no seu servidor, conforme o comando abaixo, e você começará a receber e-mails de vendas.
php -q /home/YOUR_USER_NAME/public_html/Path_to_cron.php
Use configurações comuns como "*****"
Precisa substituir YOUR_USER_NAME e Path_to_cron.php pelos seus.
Usando o n98-magerun, executei o seguinte:
n98-magerun sys:cron:run core_email_queue_send_all
Ou cronometrar, se você não quiser executá-lo o tempo todo:
watch -n 10 n98-magerun sys:cron:run core_email_queue_send_all
Isso envia todos os emails na fila a cada 10 segundos.
se SOMENTE o email do pedido não estiver sendo enviado, é porque o Magento enfileira apenas os emails do pedido e os salva para enviá-los em lotes. Se você não tiver a configuração do Heartbeat Cron, eles nunca sairão da fila do Magento.
Você está vendo outros e-mails do Magento saírem porque são enviados diretamente do Magento para o seu daemon de mala direta. As filas do Magento (como o e-mail do pedido) nem são entregues ao daemon do mailer até que o Hearbeat Cron seja executado.
Para forçá-los a sair ... navegue até http://yourmagentodomain.com/cron.php e continue atualizando a página a cada cinco minutos e você verá os e-mails de pedidos em fila começarem a sair. O Heartbeat Cron deve fazer isso por você. Ah, e quando você navega para esse arquivo cron.php, a página deve estar em branco, portanto não se assuste ... ela funcionará.
Eu segui a base de conhecimento para fazê-lo funcionar: http://www.magentocommerce.com/knowledge-base/entry/ee1141-ce191-responsive-email#contact-info
Na parte "Localizando e-mails transacionais", depois de seguir as instruções anteriores, copiar para / en_UK finalmente levou os e-mails (incluindo os que não foram enviados anteriormente), também tivemos um problema com a página de confirmação do pedido não sendo exibida para os clientes em conclusão. Isso foi corrigido também.
Por exemplo, para a localidade en_GB, você precisará copiar os arquivos localizados em:
app / locale / pt_BR / template / email
para o local:
app / locale / pt_BR / modelo / email
Se o seu sistema de email (smtp, zend_mail) funciona bem; desabilitar o mailQueue pode resolver seu problema.
/app/code/core/Mage/Core/Model/Email/Template.php
Alterar linha 407
if ($this->hasQueue() && $this->getQueue() instanceof Mage_Core_Model_Email_Queue) {
para
if (false /\*$this->hasQueue() && $this->getQueue() instanceof Mage_Core_Model_Email_Queue\*/) {
Se você possui a extensão SMTPpro, tente desabilitá-la. E verifique novamente. Todos os emails funcionam bem e você só precisa configurar corretamente.
A melhor maneira é fazer uma cópia do seu aplicativo / código / core / Mage / Core / Model / Email / Template / Mailer.php
Para a sua pasta local app / code / local / Mage / Core / Model / Email / Template / Mailer.php
Então comente esta linha na linha 76
->setQueue($this->getQueue())
Então você está pronto. Não há necessidade de modificar o modelo success.phtml. : D