sábado, 6 de fevereiro de 2010

Tradução - Enviando e-mail via Gmail usando CodeIgniter

Olá galera. Estou trabalhando em novo projeto e nele preciso enviar e-mails. Acontece que por enquanto o código só está na minha máquina de desenvolvimento e eu não tenho um servidor e-mails. Procurando por uma solução achei este artigo do Joel Gascoigne. Nele o Joel ensina como usar a biblioteca de e-mails do CodeIgniter para enviar e-mails usando uma conta gmail, o que é excelente para quando você quer testar funcões de envio de email localmente. Com autorização do autor original aí vai a tradução do artigo dele.

Eu acabei de implementar esta funcionalidade para o OnePage e gostaria de compartilhar no caso das pessoas acharem útil.
Porque enviar e-mail usando o Gmail ao invés de usar uma configuração de um servidor SMTP?
Existem algumas vantagens que vejo fazendo desta forma:
  • A possibilidade de desenvolver localmente e testar o envio de e-mails sem ter o trabalho de configurar um servidor local de e-mail.
  • A possibilidade de usar os emails Google Apps para enviar e-mails a partir de e-mails que estão sobre seu próprio domínio.
  • A possibilidade de ter referências dos e-mails que você envia usando este método na sua pasta "Enviadas" na sua conta Gmail.
Vamos lá!
Agora que decidimos que este é o caminho que tomaremos, vamos começar! Na verdade é bem simples, especialmente com o fantástico framework CodeIgniter sua classe Email. Isto deve funcionar bem somente com o PHP regular ou com outros frameworks se você usar os mesmos conceitos demonstrados aqui. E também devo dar créditos para o usuário wrs dos Fórums CodeIgniter, uma vez que minha solução foi baseada no post dele.
Um novo arquivo de configuração - email.php
Coloqueo o código seguinte dentro de um novo arquivo de configuração chamado "email.php" e coloque este arquivo dentro do diretório application/config. Arquivos de configuração nomeados com o mesmo nome de uma biblioteca são incluidos automaticamente, é isso que estamos fazendo aqui.



Tenha certeza de alterar 'seu email gmail aqui' e 'sua senha gmail' apropriadamente.
Enviando email, agora através do Gmail
Agora qualquer e-mail enviado usando a classe Email do CodeIgniter vai na verdade ser enviado da conta Gmail escolhida:



Uma inconveniência deste método
Existe uma inconveniência deste método, que é que você não pode especificar o email "from" para outro email que não seja seu endereço Gmail ou um endereço de e-mail associado com sua conta Gmail. Todo e-mail vai ser enviado da conta de e-mail que você configurou como padrão na sua conta Gmail.
Possível Erro - "Unable to find the socket transport 'ssl' - did you forget to enable it when you configured PHP?"

Se você recebeu este erro, como eu recebi, então você precisa habilitar o SSL na configuração do PHP. Abra o php.ini e encontre uma linha como a seguir:
;extension=php_openssl.dll
Simplesmente remova o ";" e reinicie o Apache e você deve estar pronto. O ";" denota que a linha é um comentário, e removendo isso é habilitado a extensão SSL para o Apache. Crédito - http://www.boringguys.com/2007/07/20/unable-to-find-the-socket-transport-ssl-did-you-forget-to-enable-it-when-you-configured-php/
Isso é tudo!
Eu espero que isso seja útil para algumas pessoas :) Eu uso isso principalmente para densenvolvimento local - é muito bom ser possível testar tudo.
Se você acha meus posts úteis , você deve checar meu site OnePage e me seguir no twitter.
Fim tradução.

É isso aí pessoal, eu testei usando minha conta gmail e funcionou direitinho, qualquer dúvida ou problema comentem aí. Até a próxima.

4 comentários:

  1. No meu tá dando esse erro:
    Message: fsockopen() [function.fsockopen]: SSL: A operação foi concluída com êxito.

    Não tá enviando

    ResponderExcluir
  2. Obrigado pelo post, bem prático, estava com preguiça de procurar as credenciais, foi só copiar e colar as configs de e-mail ;)

    Só um adendo: para enviar mensagens com conteúdo html, adicione no config:
    $config['mailtype']="html";

    Valeu ;)

    ResponderExcluir
  3. Perfeito, funcionou corretamente aqui,
    Muito Obrigado

    ResponderExcluir
  4. Rapaz, você salvou o meu fim de semana. Muito Obrigado!!!!!!

    ResponderExcluir