Formulário de contato em PHP

A forma como as pessoas se comunicam evoluiu muito desde que comecei a discernir o que é de fato a internet em 2009. Fóruns de discussão e chats na época eram as formas mais eficazes de comunicação, e nos sites os formulários de contatos eram comuns. Se você tem um site hoje em dia, saber promover uma comunicação por meio de Whatsapp, Messenger ou qualquer plataforma que ofereça troca de mensagens instantânea é algo normal. Contudo, a importância dos formulários de contato nunca se perderam nesse meio.


A forma básica

Se não tem conhecimento no PHP, é ideal seguir as recomendações deste artigo antes de continuar. Isto é, o básico de HTML é fundamental também, então sem delongas, vamos à prática. Antes de mais nada, criar a página que receberá o internauta para coletar a mensagem é o primeiro passo. Existem plugins, scripts e formas mais confeccionadas para criar formulários de contato pela web, mas aqui vamos explicar como fazer isso da forma mais simples possível.


<html>

<head>

<title>Meu formulário de contato</title>

</head>

<body>

<div id=”formulario” class=”form-contato”>

<form action=”” method=”POST”>

<div name=”grupo1”>

<label for=”nome_completo”>Seu nome completo</label>

<input type=”text” id=”nome_completo” name="nome_completo" maxlenth=”100” required />

</div>

<div name=”grupo2”>

<label for=”telefone_numb”>Número para contato</label>

<input type=”number” id=”telefone_numb” name="telefone_numb" min="0" required />

</div>

<div name=”grupo3”>

<label for=”mensagem”>Sobre o que deseja falar?</label>

<textarea id="mensagem" name="mensagem" cols="5" rows="5" required></textarea>

</div>

<div nome="grupo4" align="right">

<button type="submit" name="submeter">Enviar</button>

</div>

</form>

</div>

</body>

</html>

Comando PHP: função email()

No lado do servidor a mágica pode começar. A função mail() permite que seu email seja enviado para o email que configura como receptor da mensagem do cliente. Todavia, essa função só funciona quando seu Apache está autorizando o PHP a enviar emails (como explicado neste artigo). Logo, a função é:


mail(

    string $to,

    string $subject,

    string $message

): bool


Explicando melhor, a função booleana retorna verdadeiro caso tudo esteja certo, mas falso caso algo tenha saído errado. Substituindo os campos da função, teremos:

string $to: será o email para onde o servidor vai enviar os dados do formulário.

string $subject: o assunto, título ou conteúdo que intitula o conteúdo da explicativo da mensagem.

string $message: conteúdo da mensagem que será transmitida.


Existem outros parâmetros na função mail, mas queremos ser simples com as coisas e vamos deixar para explicar isso em outro artigo. Caso queira, consulte o link que deixamos no começo do parágrafo.

Por fim, teremos algo como:

<?php

mail(

'email@provedor.com.br', // ENDEREÇO  DE EMAIL PARA QUAL SERÁ ENCAMINHADO

        A MENSAGEM DO CLIENTE

'Assunto da mensagem', // ASSUNTO DIGITADO PELO AUTOR

'Conteúdo da mensagem' // MENSAGEM ESCRITA PELO AUTOR

)

?>

Isso por si já envia o email do provedor para o email que determinamos. Mas, vamos integrar isso ao nosso formulário então.


Juntando o formulário HTML com PHP

Crie um arquivo com o nome de index.php no seu provedor. Se usar o Xampp ou qualquer sistema no PC, insira o arquivo no local onde estão os arquivos do site. Após criar, só colar os exemplos acima tudo na página php que criou. Algo semelhante a isso ficará disponível:


Pode ser que você se depare com esse erro:
Warning: mail(): Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set()
Isso significa que não há um provedor SMTP disponível/acessível para enviar emails. Normalmente, essa configuração está no php.ini do seu PHP. Neste caso, se usa o seu PC (localhost) para testar essas coisas, então recomendo ler esse artigo de como configurar o servidor SMTP do gmail para enviar emails teste.

Se apertar o botão botão “Enviar” nada irá ocorrer, mesmo que os dados dos campos sejam enviados. Isso ocorre porque precisamos passar uma função com uma condição inicial para tratar o método POST.
if(isset($_POST['submeter']) AND empty($_POST['submeter'])) {
// VARIÁVEIS AQUI
}
A função isset() verifica se a variável foi definida. Se não, um aviso pode ser exibido após submeter o formulário. Logo a seguir, usamos a função empty() para verificar se a variável está vazia. Como o botão submeter não contém conteúdo, ele serve para verificar se o botão foi clicado. Se inserir um “value=’TESTE’” e manter a função empty, o PHP vai retornar FALSO para essa condição, porque o $_POST com nome submeter foi acionado, mas a variável submeter contém um valor (ou seja, não está vazia) e isso trará uma condição falsa. Agora, se ela for vazia, então ambas as funções retornam ‘verdadeiro’ e a condição é executada.

Nessa altura do campeonato, você está achando isso muito chato, mas já está acabando. Neste momento, insira as variáveis PHP que receberá os valores para que tudo seja enviado de seu servidor para seu email definido. Por fim, teremos esse PHP:
if(isset($_POST['submeter']) AND empty($_POST['submeter'])) {
$nome_cliente = $_POST['nome_completo'];
$telefone = $_POST['telefone_numb'];
$mensagem = $_POST['mensagem'];
if(mail('email@provedor.com.br','Contato de cliente','Nome do cliente: '.$nome_cliente.'/rTelefone cliente: '.$telefone.'/rMensagem: '.$mensagem)) {
echo "email enviado com êxito!";
} else {echo "Email não foi enviado. :(";}
}
Eu sei, eu coloquei mais coisas aí, e vou explicar.
ini_set() é uma função que define um valor para uma configuração do PHP. Isto é, atribuímos smtp_port para o ini_set, que vai buscar no php.ini o nome da configuração “smtp_port”. Se encontrar, ela vai substituir o valor dessa configuração no tempo da execução pela que definirmos nela. Se no seu php.ini o smtp_port mantém o valor 25 por exemplo, agora ele passará para 587 até a condição “if” ser finalizada.

Como a função mail() é booleana, podemos inserir dentro de uma nova condição IF para determinar se ela é verdadeira (caso o email seja enviado) ou falsa (caso o email não seja enviado). Por isso, juntamos tudo dentro de um if(). Salve o arquivo e vamos ver o que vai acontecer quando preenchemos os dados do formulário e clicamos no botão Submeter.


Só para ressaltar, absolutamente tudo isso vai depender da configuração do seu servidor SMTP! Se ele estiver mal configurado, você não será capaz de enviar emails a partir do seu localhost (PC).