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!