Vejo um comportamento estranho em uma de nossas lojas: quando um pedido é feito, o email de confirmação é enviado em CC a todos os clientes registrados que têm um pedido no estado "processando". Isso acontece independentemente do método de pagamento (transferência bancária e cartão de crédito estão disponíveis) e do método de envio (apenas o Magento Flat Standard disponível).
A configuração da loja é bastante básica com uma visualização de site / loja / loja. As extensões instaladas não incluem nada relacionado a pedidos ou compras, exceto a extensão do provedor de pagamento do cartão de crédito.
orders
transactional-mail
order-email
simonthesorcerer
fonte
fonte
Respostas:
Atenção!
O que esse código faz é: toda vez que o magento-cronjob remove todas as mensagens enviadas da tabela do banco de dados core_email_queue, ele também remove todos os destinatários dessas mensagens. Portanto, basicamente, ele não funciona para você até que esta tarefa do cronjob seja executada pelo menos uma vez.
Solução
Encontrei a resposta graças a outra pergunta aqui: a tabela core_email_queue_recipients não foi esvaziada pelo cronjob. O método
Mage_Core_Model_Email_Queue::cleanQueue()
chamaMage_Core_Model_Resource_Email_Queue::removeSentMessages()
, o que é bastante simples:De qualquer forma, esse método não remove os destinatários antigos. Assim, assim que uma nova mensagem com message_id n for enfileirada, todos os destinatários antigos com message_id n também receberão o novo email. O que não entendo é: por que a equipe principal não viu isso e por que isso não leva a mais problemas?
Eu escrevi um pequeno módulo para corrigir isso. Ele usa uma substituição de classe para
Mage_Core_Model_Resource_Email_Queue
, portanto, se alguém puder sugerir uma solução melhor (baseada em eventos?), Eu ficaria feliz.app / code / local / Namespace / EmailQueueFix / etc / config.xml
app / code / local / Namespace / EmailQueueFix / Model / Resource / Email / Queue.php
app / etc / modules / Namespace_EmailQueueFix.xml
fonte
Postei uma correção diferente que não requer a instalação de um novo módulo e provavelmente é um pouco mais limpa.
Ele apenas usa uma restrição de chave estrangeira na tabela core_email_queue_recipients para excluir os registros de Destinatários em cascata.
Ao usar essa nova chave estrangeira, nenhum registro órfão será deixado na tabela core_email_queue_recipients ao limpar a tabela core_email_queue , portanto, nenhuma mensagem duplicada será enviada para destinatários errados.
Você pode encontrar a solução detalhada neste post: https://magento.stackexchange.com/a/87299/23057
fonte
Este é um problema de índices no banco de dados. Você pode repará-lo com a ferramenta de reparo de banco de dados Magento .
http://merch.docs.magento.com/ce/user_guide/magento/database-repair-tool.html
O problema me causa muita frustração. No meu caso, ele foi originado da atualização de versão. É uma boa prática cada vez que você faz um upgrade de versão para fazer uma instalação limpa em outro diretório e em um novo banco de dados de referência vazio e, em seguida, use a ferramenta para comparar se a estrutura e os índices do banco de dados são declarados como no novo vazio. banco de dados de referência. Essa estrutura é o que a nova versão precisa! Esteja ciente de que o problema não é de índices ruins e não pode ser resolvido com a re-indexação. Mais é um problema de falta de índices como eu o vejo. Sempre mantenha cópias de backup do banco de dados antes de executar a ferramenta!É uma pena que, mesmo se você reinstalar o Magento, a verificação de índice e estrutura do banco de dados não seja fornecida como uma opção e você tenha que seguir o procedimento acima. (no meu caso, estava atualizando da versão 1.8 para 1.9).
fonte