foto
Gabriel Z Blog

Gabriel Z Blog

Tecnologia web, Magento & geek stuff

Posts com a Tag ‘e-mail’


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

29 de julho de 2009

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');
        }
    }


© 2012 - Indexa Ltda. Todos os direitos reservados.