Formulário de contato com PHP

segunda-feira, 3 de dezembro de 2007

Configuração de e-mail no PHP

Antes de podermos enviar e-mails com PHP, precisamos configurá-lo para isso. A configuração para enviar e-mails em PHP é feita com o arquivo php.ini. Então, abra o arquivo php.ini do seu servidor em qualquer editor que você normalmente usa (pode ser no Bloco de Notas).

NOTA: Se o seu servidor não te dá acesso às configurações do PHP, então as coisas ficam um pouco mais difíceis. Pode ser que o administrador do servidor permita configurar o envio de e-mails de alguma outra forma ou através de um painel administrativo. Neste caso, procure se informar sobre as configurações de e-mail do seu servidor e como alterá-las e pule esta etapa.

Na seção intitulada [mail function] no arquivo php.ini, você encontrará três configurações: SMTP, sendmail_from e sendmail_path. Se o seu servidor roda em uma máquina Windows, é melhor definir a opção SMTP e apontar para o seu servidor SMTP (ou o servidor SMTP do seu ISP, se você estiver configurando o PHP na sua máquina doméstica). Se, em vez disso, você estiver configurando o PHP em um servidor Linux (ou outro sistema operacional baseado em Unix), você pode definir a opção sendmail_path para apontar para o programa sendmail no seu servidor, passando a opção -t para ele. Você também pode usar a opção SMTP no Linux, se não tiver um programa sendmail configurado. Em ambos os casos, configure a opção sendmail_from para o seu endereço de e-mail, ou qualquer endereço que você gostaria que aparecesse como remetente das suas mensagens (o endereço from padrão para e-mails enviados de scripts PHP). Veja como fica esta seção em um servidor Windows ou Linux sem sendmail:

[mail function]
; Setup for Windows systems
SMTP = smtp.meu.isp.net
sendmail_from = exemplo@meuservidor.com.br

E é assim que normalmente fica em um servidor Linux com sendmail:

[mail function]
; Setup for Linux systems
sendmail_path = /usr/sbin/sendmail -t -i
sendmail_from = exemplo@meuservidor.com.br

Com essas configurações definidas, reinicie seu servidor e pronto!

Testando o envio de e-mail

Para testar se o envio de e-mails está funcionando, você deve, primeiro, criar um formulário HTML que submete para o script PHP que enviará a mensagem. Veja este exemplo:

<form action="sendmail.php" method="post">
	<label for="subject">Assunto:</label><br>
	<input type="text" id="subject" name="subject" required><br><br>

	<label for="name">Nome:</label><br>
	<input type="text" id="name" name="name" required><br><br>

	<label for="from">E-mail:</label><br>
	<input type="text" id="from" name="from" required><br><br>

	<label for="message">Mensagem:</label><br>
	<textarea id="message" name="message" rows="5" required></textarea><br><br>

	<button type="submit">Enviar</button>
</form>

Ao clicar no botão "Enviar", os dados preenchidos nos campos do formulário serão enviados para o script sendmail.php.

O conteúdo do script PHP no arquivo sendmail.php que receberá os dados do formulário é este:

<?php
// Verifica se o formulário foi enviado
if ($_SERVER["REQUEST_METHOD"] === "POST") {
	// Captura os dados do formulário
	$subject = trim($_POST['subject']);
	$name = trim($_POST['name']);
	$from = trim($_POST['from']);
	$message = trim($_POST['message']);

	// Valida os campos
	if (empty($subject) || empty($name) || empty($from) || empty($message)) {
		die("Todos os campos são obrigatórios!");
	}

	// Configurações do e-mail
	$to = "seu_email@dominio.com"; // Substitua pelo seu e-mail
	$headers = "From: $name <$from>\r\n";
	$headers .= "Reply-To: $to\r\n";
	$headers .= "Content-Type: text/plain; charset=UTF-8\r\n";

	// Envia o e-mail
	$sent = mail($to, $subject, $message, $headers);

	if ($sent) {
		echo "E-mail enviado com sucesso!";
	} else {
		echo "Falha ao enviar o e-mail.";
	}
} else {
	die("Acesso inválido.");
}
?>

Este script PHP captura os dados enviados pelo formulário, valida os campos, configura o e-mail e o envia. Se o e-mail for enviado com sucesso, uma mensagem de sucesso é exibida. Caso contrário, uma mensagem de falha é exibida.

Pronto! Agora você tem um formulário de contato que envia e-mails com PHP. Se quiser saber mais sobre o PHP e como melhorar os e-mails enviados, dê uma olhada na documentação da função mail no site do PHP.

Copyright © 2007 - 2008 Victor Ferreira
Designed by Free CSS Templates

NÃO CLIQUE AQUI