09 mai

Enviando formulários no WordPress usando SMTP e PHPMailer nativo

Categoria: - Comentários (8)

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

  • Gustavo

    Instalei um plugin de formulário de emails que funciona bem na maioria dos sites que tenho. Todavia, para um cliente que não tem hospedagem comigo, não consigo enviar emails para o email do domínio desse mesmo site. O mais estranho é que se eu colocar qualquer outro email (@hotmail.com, @gmail.com, etc…) ele envia normal, só para o email do domínio do site é que não está enviado.

    Como isso pode acontecer?

  • 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!