09 mai

Enviando formulários no WordPress usando SMTP e PHPMailer nativo

Categoria: - Comentários (9)

Recentemente eu postei aqui uma forma simples de enviar um formulário pelo WordPress: Leia o post aqui.

Só que a função mostrada envia o formulário usando mail() do PHP. Acontece que hoje em dia, muitos hosts desabilitam a função mail() para fins de segurança. Por este motivo, resolvi ensinar a enviar formulários usando o PHPMailer nativo do WordPress, usando o SMTP da sua hospedagem.

Para tanto, será necessário que seja instalado o plugin WP Mail SMTP para que o WordPress possa enviar mensagens usando SMTP ao invés de usar a função mail().

Se você não quiser usar este plugin, também poderá optar por usar o SMTP do Gmail, ok? Na função abaixo, eu estou usando os campos criados pelo plugin WP Mail SMTP na tabela wp_options, pegando seus respectivos dados, através da função get_option(). Os campos são: smtp_host, smtp_user, smtp_pass e mail_from

Vamos lá! Abra o arquivo functions.php do seu tema e coloque a função abaixo:

No html do seu template, onde irá mostrar o seu formulário, faça assim:

Parâmetros do PHPMailer que podem ser utilizados nessa função:
http://phpdocs.epesi.org/PHPMailer/PHPMailer.html

Para usar o SMTP do Gmail, veja as configurações abaixo:
http://support.google.com/mail/bin/answer.py?hl=pt&answer=13287

Bom, é isso então pessoal. Qualquer dúvida ou problema com a função, basta comentar aqui, ok?

Abraços e até a próxima! :-)

Comentários ( 9 )

  • Luyz Nascimento

    Olá,

    Parabéns pela forma que fez esse tutorial. Muito bom, estou enfrentando um problema aqui e não sei se é com a forma do phpmailer ou o próprio wordpress. Fiz uma implementação no seu modelo criando um plugin para toda vez que alguém logar no wordpress seja enviado um e-mail.

    Se utilizar a função mail – roda numa boa. Porém, gostaria de usar html e também pensando noutros projetos. Porém, se aplicar o action hook, recebo o seguinte:

    Fatal error: Cannot redeclare class phpmailer in /home//www/wp-includes/class-phpmailer.php on line 40

    É fácil perceber o motivo, como inicializo o obj phpmailer no meu plugin, ele se choca com aquele utilizado pelo wp_mail. E não queria modificar (até porque não consegui isto) a estrutura de e-mail do wordpress toda pra isso. Quero algo único e apenas para o processo de login…entende? Já rodei pra caramba e não consegui encontrar uma solução que faça utilizar o phpmailer sem com isto impactar nesse erro. Se você tiver uma dica…será pra lá de bem vinda!

    Att,

Envie seu comentário

Resize-me!