Formulário de e-mail e envio com PHP

Há anos atrás, quando queríamos colocar um formulário de e-mail em nosso site, simplesmente pegávamos um script em Perl que funcionava, mas não fazíamos ideia de como as coisas aconteciam por trás. Neste post demonstrarei que é muito simples fazer a mesma coisa em PHP. Perceba que o foco é principalmente no PHP, e não necessariamente na validação do formulário ou CSS

Há anos atrás, quando queríamos colocar um formulário de e-mail em nosso site, simplesmente pegávamos um script em Perl que funcionava, mas não fazíamos ideia de como as coisas aconteciam por trás. Neste post demonstrarei que é muito simples fazer a mesma coisa em PHP. Perceba que o foco é principalmente no PHP, e não necessariamente na validação do formulário ou CSS, embora usaremos algumas boas práticas de validação.

Aviso: O script apenas enviará o e-mail se estiver em um servidor. Você não conseguirá mandar o e-mail do localhost (No Wamp ou Xampp por exemplo).

Criando os arquivos

Criaremos quatro arquivos que irão conter nosso script.

O index.php, para que a pasta sempre abra no nosso arquivo de contato (você pode renomear depois para contato.php se quiser). O arquivo mail_ok.php, para exibir a mensagem que o e-mail foi enviado, e o mail_error.php, contendo a mensagem de erro. Finalmente, o mail_send.php, contendo o script que envia o e-mail propriamente dito.

index.php

No index.php vamos fazer o nosso formulário:

Esse formulário contém os campos e-mail e mensagem, ambos campos obrigatórios.

Vamos agora fazer o mail_ok.php e mail_error.php:

mail_ok.php

“mail_error.php

Os arquivos anteriores mostram mensagens se o e-mail foi enviado. O seguinte script PHP irá redirecionar para eles:

mail_send.php

Este último script define três funções:

  • pegaValor: se existir, pega a váriavel enviada via ‘post’, senão, retorna uma string vazia;
  • validaEmail: retorna se o e-mail é válido;
  • enviaEmail : chama a função mail do PHP com as variáveis que definimos.

As variáveis $de e $mensagem irão pegar os valores enviados pelo formulário. Nas variáveis $email_servidor e $para você deverá colocar seu e-mail do servidor e o e-mail para o qual será enviado o formulário, respectivamente. A variável $assunto será, obviamente, o assunto da mensagem.

Corpo do script

Esta parte do script é o controle de fluxo. Se as variáveis não forem vazias e o e-mail for válido, enviará o e-mail e atribuirá a variável $pagina para mail_ok.php. Caso contrário, a variável $pagina será mail_error.php. E finalmente, redirecionaremos a página com a função header.

Aviso: É de suma importância verificar no seu editor de texto se a codificação é UTF-8 sem BOM. Se não for, o script irá enviar um espaço em branco antes do cabeçalho de redirecionamente, e irá aparecer o seguinte erro:

Cannot modify header information - headers already sent

Com isso nosso script PHP está pronto. Adeus Perl!

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *