09 mai

Enviando formulários no WordPress usando SMTP e PHPMailer nativo

Categoria: - Comentários (7)

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 ( 7 )

  • Bom dia,

    Estou com o mesmo problema dos amigos acima. Tenho um formulário no site, fiz vários testes como se eu fosse o clinte. Quando preencho o campo EMAIL com algum email @hotmail.com @live.com , diz que o email foi enviado com sucesso, porém o email não chega na caixa de entrada nem no spam. Quando preencho o campo EMAIL com qualquer outro @dominioqualquer.com.br ou .com apenas, o email é enviado e chega com sucesso na minha caixa. Eu estava utilizando o painel do gmail, pensei que o erro fosse nele, ai migrei o meu domínio para o painel do hotmail, mas o erro persistiu.

    Pois bem, já liguei no host e me disseram que como estou roteando o email para fora do servidor, ou seja, estou usando as DNS do hotmail nas contas de email, o host não tem como corrigir isso. Disseram que o problema pode ser no hotmail.

    Mas não acredito que seja, acho que é algo na função MAIL e SMPT. Alguém ai pode me ajudar? Vamos encontrar uma solução para isso.

    Obrigado.

  • Tenho um formulário pronto no meu site desenvolvido em wordpress. Qdo uso email @gmail ou @hotmail para preencher tudo e enviar (como se fosse um cliente), aparece a mensagem de “enviado com sucesso”.Mas as mensagens não chegam no meu e-mail (nem na cx de spam). Qdo preencho com @outroservidor, as mensagens chegam no meu e-mail. Já atualizei os plugins etc…Podem me ajudar ?

    • wpmidia

      Na maioria dos hosts, você deve usar um e-mail do seu domínio para efetuar os envios…

  • Grazielly

    Olá.. gostaria de uma ajuda.
    Tenho um formulário pronto no meu site desenvolvido em wordpress..
    no formulário tem:

    Nome:
    e-mail:
    Mensagem:
    enviar.

    eu preencho tudo e envio, aparece a mensagem de “enviado com sucesso”.

    Mas as mensagens não chegam no meu e-mail.. e eu não sei pra onde elas vão. Como faço pra chegar no meu e-mail(e-mail da empresa)?
    Por favor.. se poder me ajudar , obrigada =)

    • wpmidia

      Olá Grazielly,

      Difícil dizer o que pode estar errado… Pode ser N coisas. Está hospedado aonde? Já verificou se as mensagens não estão caindo na caixa de SPAM?
      O formulário foi feito com algum plugin? Já tentou entrar em contato com o suporte do seu host e verificar se está tudo OK com a sua hospedagem?

      Abs.
      Miriam de Paula.

  • Olá Míriam,
    Estou tentando usar o código e está apresentando um erro na linha 8 do segundo bloco de código, já inclui o primeiro bloco no funtions.php, descomentei as linhas para usar o SMTP autenticado e configurei o plugin.

    Erro: “Parse error: syntax error, unexpected T_STRING in C:\Program Files\EasyPHP-5.3.8.1\www\wp-theme\wp-content\themes\GDB-V2\single-diretorio.php on line 46″

    Coloquei os códigos no pastebin: http://pastebin.com/3QVv5JhC e http://pastebin.com/qZZSF3r5

    Até!

    • wpmidia

      Olá Rhenan!

      Erro: “Parse error: syntax error, unexpected T_STRING in C:\Program Files\EasyPHP-5.3.8.1\www\wp-theme\wp-content\themes\GDB-V2\single-diretorio.php on line 46″

      Isto está informando que houve um erro no arquivo single-diretorio.php, na linha 46 ….

      Algo no seu tema está errado, tente verificar essa linha pra ver o que há de errado …

      Abs.
      Miriam de Paula

Envie seu comentário

Resize-me!