foto
Gabriel Z Blog

Gabriel Z Blog

Tecnologia web, Magento & geek stuff

Posts com a Tag ‘e-mails transacionais’


Magento: envio de e-mails transacionais não funciona

29 de julho de 2009 Enviar este artigo por e-mail Imprimir este artigo

Este é um dos principais problemas que os usuários brasileiros de Magento encontram: o sistema não envia e-mails transacionais (nem de cadastro, formulário de contato ou qualquer outro). Bem, vou tentar resumir abaixo o que você deve fazer para enviar corretamente os e-mails com as vendas, faturas, pedidos, etc. Você pode utilizar a lista a seguir como uma “checklist”, na ordem:

  1. Verifique sua tradução instalada: se a tradução utilizada não contiver o diretório /app/locale/pt_BR/template/email/sales, você não conseguirá carregar os e-mails “base” para criar seus próprios e-mails de venda pelo admin. Baixe um pacote atualizado, completo. Importante: se você mudar a língua do sistema para en_US e os e-mails estiverem saindo, os passos 1 a 4 deverão solucionar o seu problema.
  2. Verifique as permissões do diretório de tradução: por padrão, todos os diretórios sob /app/locale/pt_BR devem permissão 775 (chmod em sistemas Unix-like). Deixe também todos os arquivos com permissão 644. Se mesmo assim você não estiver conseguindo carregar os templates ao criar um novo e-mail transacional no admin, experimente outras permissões (p. ex. 777 para todo mundo), pois este ponto pode variar conforme as restrições de seu servidor de hosting.
  3. Verifique a codificação dos templates: todos os arquivos .html dentro do diretório /sales devem estar em UTF-8, pois os caracteres acentuados podem impossibilitar o carregamento dos templates no admin, se os arquivos estiverem em ISO ou outro formato (a mensagem de “carregando” fica aparecendo eternamente e não carrega nada). Se você baixou um bom pacote de tradução, seus arquivos já devem estar codificados em UTF-8.
  4. Verifique as configurações de e-mails de vendas: vá até Sistema > Configuração > VENDAS > E-mails de vendas e revise todas as configurações. Assegure-se de habilitar todos os e-mails, selecione corretamente os remetentes (preferencialmente e-mails reais) e os modelos (deve haver um modelo em português para cada e-mail transacional).
  5. Verifique as permissões de envio de e-mail do seu provedor: talvez você precise solicitar ao provedor que habilite o e-mail nobody para envio de e-mails a partir da sua conta de hospedagem.
  6. Altere a função do Magento que envia as mensagens: o Magento utiliza o Sendmail para enviar e-mails. Este serviço pode estar configurado de diversas formas, dependendo das restrições de segurança do seu servidor de hosting e, portanto, se você revisou todos os itens acima e seu sistema ainda não envia mensagens, a possibilidade de o Sendmail ser o vilão dessa história é grande. Para “driblar” esta dificuldade, altere o método da biblioteca Zend que envia os e-mails, para usar a função “mail” padrão do PHP, em /lib/Zend/Mail/Transport/Sendmail.php:
/**
     * Send mail using PHP native mail()
     *
     * @access public
     * @return void
     * @throws Zend_Mail_Transport_Exception on mail() failure
     */
    public function _sendMail()
    {
    /**
        if ($this->parameters === null) {
            $result = mail(
                $this->recipients,
                $this->_mail->getSubject(),
                $this->body,
                $this->header);
        } else {
            $result = mail(
                $this->recipients,
                $this->_mail->getSubject(),
                $this->body,
                $this->header,
                $this->parameters);
        }
*/
            $result = mail(
                $this->recipients,
                $this->_mail->getSubject(),
                $this->body,
                $this->header,
                '-f'.$this->_mail->getFrom());
        if (!$result) {
            /**
             * @see Zend_Mail_Transport_Exception
             */
            #require_once 'Zend/Mail/Transport/Exception.php';
            throw new Zend_Mail_Transport_Exception('Unable to send mail');
        }
    }

Problema ao visualizar e-mails transacionais no Magento

28 de abril de 2009 Enviar este artigo por e-mail Imprimir este artigo

Os seguintes templates usados em e-mails transacionais apresentam erro, ao se tentar visualizá-los pelo Admin:

  • app/design/adminhtml/default/default/template/email/order/items_creditmemo.phtml (New credit memo e afins)
  • app/design/adminhtml/default/default/template/email/order/items_invoice.phtml (New Invoice e afins)
  • app/design/adminhtml/default/default/template/email/order/items_shipment.phtml (New Shipment e afins)

Aparentemente, os arquivos correspondentes foram “esquecidos” pela equipe do Magento, mesmo existindo um erro relacionado ao problema como bug issue (com status resolved).

A solução é copiar os templates que estão em outras pastas, para seus devidos lugares, como segue:

./app/design/frontend/default/default/template/email/order/invoice/items.phtml -> ./app/design/frontend/default/default/template/email/order/items_invoice.phtml
./app/design/frontend/default/default/template/email/order/shipment/items.phtml -> ./app/design/frontend/default/default/template/email/order/items_shipment.phtml
./app/design/frontend/default/default/template/email/order/shipment/track.phtml -> ./app/design/frontend/default/default/template/email/order/shipment_track.phtml
./app/design/frontend/default/default/template/email/order/creditmemo/items.phtml -> ./app/design/frontend/default/default/template/email/order/items_creditmemo.phtml

Caramba! Essa eu não tinha visto… Obrigado a Esther, da Techvisa;)

Thread correspondente no fórum: clique aqui (Google cache – pode estar fora do ar).

Magento: variáveis para o e-mail “Envie a um amigo”

28 de abril de 2009 Enviar este artigo por e-mail Imprimir este artigo

Se você estiver querendo enviar um pouco mais de informações sobre o produto, no e-mail “Send to a friend” do Magento, pode usar as seguintes variáveis para incrementar a mensagem:

  • name -> Nome do destinatário
  • email -> E-mail do destinatário
  • product_name -> Nome do produto
  • product_url -> URL do produto
  • message -> Mensagem (texto)
  • sender_name -> Nome do remetente
  • sender_email -> E-mail do remetente
  • product_image -> Imagem do produto

Dá para deixar o e-mail bem mais completo do que a mensagem padrão… ;)



© 2010 - Indexa Ltda. Todos os direitos reservados.