Servcloud - Servidores Otimizados de Alta Performance para Hospedagem
EnglishPortuguese

Formulário PHP usando PHPMAILER

Neste artigo, vamos ensinar como você pode criar e/ou configurar o seu formulário para enviar e-mails autenticados. É muito comum contas serem usadas para envio de spam quando não usam SMTP autenticado e optam por usar apenas a função mail() sem autenticação.

Optar por SMTP autenticado é muito importante para evitar que terceiros usem seus domínios para envio de spam e consequentemente, sua conta seja suspensa por tal prática.

Não conheço PHPMAILER, o que é?

O PHPMailer é uma biblioteca de códigos para enviar e-mails com segurança e facilidade via código PHP de um servidor web. Enviar e-mails diretamente pelo código PHP requer uma familiaridade de alto nível com o protocolo padrão SMTP e problemas e vulnerabilidades relacionados à injeção de e-mail para envio de spam.

O principal benefício em usar ele ao invés da função mail(), é de fato que seus e-mails terão mais chances de serem entregues na caixa de entrada. Normalmente quando não autenticados, os e-mails facilmente são encaminhados para caixa de SPAM.

Por onde começo?

Disponibilizamos 3 arquivos aqui para você entender um pouco sobre o funcionamento. Um arquivo em html que faz o envio para as diretivas do arquivo “envio.php”, e que inclui as funções contidas em “phpmailer.php”. Segue:

form.php: Este arquivo receberá as informações e enviará para o arquivo “envio.php”

envio.php: Processa as variáveis transportadas via POST

phpmailer.php: Contém todas as orientações, incluindo informações necessárias para o envio por SMTP autenticado

Seguem códigos

form.php

form.php:
[code lang=”php”]<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”>
<html xmlns=”http://www.w3.org/1999/xhtml”>
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=utf-8″ />
<title>Formulário de Contato</title>
<style type=”text/css”>
#contato {
font-family: Arial, Helvetica, sans-serif;
}
#contato input, #contato textarea {
font-family: Arial, Helvetica, sans-serif;
padding: 5px;
width: 250px;
}
</style>
</head>
<body>
<form action=”envia.php” method=”post” id=”contato”>
<fieldset>
<legend>Formulário de Contato</legend>
<label>Seu nome:</label><br />
<input name=”nome” type=”text” /><br /><br />
<label>Seu email:</label><br />
<input name=”email” type=”text” /><br /><br />
<label>Assunto:</label><br />
<input name=”assunto” type=”text” /><br /><br />
<label>Mensagem:</label><br />
<textarea name=”mensagem” rows=”10″></textarea><br /><br />
<input name=”submit” type=”submit” value=”Enviar” style=”width: auto;” />
</fieldset>
</form>
</body>
</html>[/code]

envio.php

[code lang=”php”]<?php
include_once(‘phpmailer.php’); //Chama o arquivo phpmailer.php com as funções para realizar o envio.
//#########################################
// Recebe as informações do formulário
//#########################################
$nome = $_POST[‘nome’];
$email = $_POST[’email’];
$assunto = $_POST[‘assunto’];
$mensagem = $_POST[‘mensagem’];
//#########################################
// Dados da conta de e-mail que fará o envio
//#########################################
$smtp = new Smtp(“localhost”); //Endereço do SMTP, geralmente localhost.
$smtp->user = “[email protected]”; //Conta de email
$smtp->pass = “suasenha”; //Senha da Conta de e-mail.
$smtp->debug = false; //Somente para usuários avançados que desejam o log do envio para testes.
//#########################################
// Envio do formulário
//#########################################
$to = “[email protected]”; //Informe aqui o e-mail que deve receber a mensagem do formulário.
$from = $email;
$subject = “Contato – ” . $assunto;
$msg = $mensagem;
if (isset($_POST[‘submit’])) {
if($nome && $email && $assunto && $mensagem) {
if($smtp->Send($to, $from, $subject, $msg)){
echo “<script>alert(‘Contato enviado!’);</script>”;
echo “<script>window.location = ‘index.php’;</script>”; //Altere aqui para o endereço de sua página.
exit;
}
}
else {
echo “<script>alert(‘Preencha todos os campos!’);</script>”;
echo “<script>window.location = ‘formulario.html’;</script>”; //Altere aqui para o endereço de seu formulário
exit;
}
}
?>[/code]

phpmailer.php

[code lang=”php”]<?php
class Smtp{
var $conn;
var $user;
var $pass;
var $debug = false;
function Smtp($host){
$this->conn = fsockopen($host, 25, $errno, $errstr, 30);
$this->Put(“EHLO $host”);
}
function Auth(){
$this->Put(“AUTH LOGIN”);
$this->Put(base64_encode($this->user));
$this->Put(base64_encode($this->pass));
}
function Send($to, $from, $subject, $msg){
$this->Auth();
$this->Put(“MAIL FROM: ” . $from);
$this->Put(“RCPT TO: ” . $to);
$this->Put(“DATA”);
$this->Put($this->toHeader($to, $from, $subject));
$this->Put(“\r\n”);
$this->Put($msg);
$this->Put(“.”);
$this->Close();
if(isset($this->conn)){
return true;
}else{
return false;
}
}
function Put($value){
return fputs($this->conn, $value . “\r\n”);
}
function toHeader($to, $from, $subject){
$header = “Message-Id: <“. date(‘YmdHis’).”.”. md5(microtime()).”.”. strtoupper($from) .”> \r\n”;
$header .= “From: <” . $from . “> \r\n”;
$header .= “To: <“.$to.”> \r\n”;
$header .= “Subject: “.$subject.” \r\n”;
$header .= “Date: “. date(‘D, d M Y H:i:s O’) .” \r\n”;
$header .= “X-MSMail-Priority: High \r\n”;
return $header;
}
function Close(){
$this->Put(“QUIT”);
if($this->debug == true){
while (!feof ($this->conn)) {
echo fgets($this->conn) . “<br>\n”;
}
}
return fclose($this->conn);
}
}
?>[/code]

SMTP Autenticado no WORDPRESS

Caso você use o wordpress, você poderá enviar e-mails com SMTP autenticado realizando procedimento mais simples do que o citado no exemplo acima. Faça login no seu painel do WordPress e no menu lateral encontre a opção “Plugins” em seguida selecione “Adicionar Novo“.

Na página de plugin, procure por “SMTP“. Encontre o plugin Easy WP SMTP e clique em “Instalar“. Assim que a instalação terminar clique em “Ativar Plugin“.

Com a instalação concluída, vamos até o menu lateral novamente na opção “Plugins” mas desta vez selecionamos “Plugins instalados“. Procure pelo Easy WP SMTP e selecione a opção “Settings“.

Em settings, basta informar as informações da conta de e-mail bem como porta de envio (geralmente 587) e em caso de dúvidas, poderá acionar a equipe de suporte da ServCloud.

Conclusão

Utilizar SMTP Autenticado é a melhor opção para manter o seu site ou blog livre de ação por parte de terceiros. Adicionalmente, com seu uso, seus e-mails serão reconhecidos como conteúdo legítimo e aceito pela maioria dos provedores de e-mail caindo os e-mails na caixa de entrada.

Sobre a ServCloud

A ServCloud é uma empresa de hospedagem de sites que oferece uma variedade de produtos na nuvem que incluem serviços de hospedagem de sitesCloudrevenda de hospedagemVPSServidores Dedicados. Não encontrou um produto que atenda sua necessidade? Entre em contato com nossa equipe que teremos o prazer em ajudá-lo(a). A ServCloud vem se destacando no mercado de hosting por oferecer um atendimento diferenciado utilizando não só os meios convencionais de atendimento como gerente de contas por whatsapp.