Enviando e-mail com PHPMailer

Você que precisa enviar e-mail pelo formulário do seu site no seu servidor de hospedagem, uma das boas opções que temos é classe PHPMailer. Neste exemplo vamos enviar e-mail com autenticação onde é necessário a senha do e-mail e colocar o host para envio do e-mail. Para utilizar o PHPMailer temos que baixar a classe no link http://phpmailer.worxware.com/



Arquivo HTML contato.html

Neste arquivo temos um formulário básico onde tem validação por jQuery.

<!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" xml:lang="pt-br" lang="pt-br">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Formulário de Contato</title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" type="text/javascript"></script>
</head>
<body>
<script type="text/javascript"> 
	
	$(document).ready(function(){
		  $('#formcontato').submit(function(){
		  		var msg = "";
	            if($('#nome').val() == ''){
	            	msg +='\nPreencha o campo nome';
	            		            	
	            }
	            var regmail = /^[\w!#$%&amp;'*+\/=?^`{|}~-]+(\.[\w!#$%&amp;'*+\/=?^`{|}~-]+)*@(([\w-]+\.)+[A-Za-z]{2,6}|\[\d{1,3}(\.\d{1,3}){3}\])$/;
			    if (!regmail.test($("#email").val())) {
				    msg +='\nPreencha o campo e-mail';
				  
			    }
				if($('#assunto').val() == ''){
	            	msg +='\nPreencha o campo assunto';
	            	
	            }
	            if($('#msg').val() == ''){
	            	msg +='\nPreencha o campo mensagem';
	            	
	            }
	            
	            if(msg != ''){
	                alert(msg);
	                return false;
	            }else{
	                return true;
	            }
	      });
	  });
     
</script>
 
<h1>Contato</h1><br/>
<form  name="contato" id="formcontato" method="post" action="envia.php">
  <fieldset style="border:0;">
	  <label>Nome:</label>

	  <input name="nome" type="text" id="nome" size="30" maxlength="50" /><br /><br />
	  <label>E-mail:</label>
	  <input name="email" type="text" id="email" size="30" maxlength="100" /><br /><br />
	  <label>Assunto:</label>
	  <input name="assunto" type="text" id="assunto" size="30" maxlength="20" /><br /><br />
	  <label>Mensagem:</label><br /><br />
	  <textarea rows="5" cols="23" id="msg" name="msg"></textarea><br /><br />

	  <input  type="submit" name="submit" value="Enviar" /> 
  </fieldset> 
 </form>

</body>
</html>

Arquivo PHP envia.php

Neste arquivo temos toda a rotina para enviar o e-mail, primeiro temos a validação dos dados por PHP, isto porque caso o usuário desabilite no navegador o javascript, o e-mail não vai ser enviado sem passar pela validação dos dados por PHP.

<?php
$erro = "";
/*Variaveis do Formulario*/
$nome = trim($_POST['nome']);/*recebe os dados digitados no campo "nome"*/
$email = trim($_POST['email']);/*recebe os dados digitados no campo "email"*/
$assunto = trim($_POST['assunto']);/*recebe os dados digitados no campo "assunto"*/
$msg= trim($_POST['msg']);/*recebe os dados digitados no campo "mensagem"*/



    if($nome == ""){
		$erro = "Preencha campo nome"."<br />";
	
    }

     //Verifica se o e-mail é válido 
    $emailPattern = '/^[^@\s]+@([-a-z0-9]+\.)+[a-z]{2,}$/i'; 
    if (!preg_match($emailPattern, $email)) { 
        $erro .= "Por favor verifique o endereço de e-mail"."<br />"; 
      
    }
	
	if($msg == ""){
		$erro .= "Preencha campo mensagem"."<br />";
	
    }

	



	  //ADICIONA O SCRIPT DE ENVIO DE E-MAILS
      require_once('phpmailer/class.phpmailer.php'); 
 
//Se não existir erro faz o procedimento para enviar o e-mail
if(empty($erro)){
  
      // O BLOCO ABAIXO INICIALIZA O ENVIO
      
      $para = ""; //SEU EMAIL QUE VAI RECEBER O E-MAIL ENVIADO
      
      $mail = new PHPMailer(); // INICIA A CLASSE PHPMAILER
      $mail->IsSMTP(); //ESSA OPÇÃO HABILITA O ENVIO DE SMTP
      
      $mail->Host = ""; //SERVIDOR DE SMTP, USE smtp.SeuDominio.com OU smtp.hostsys.com.br 
      $mail->SMTPAuth = true; //ATIVA O SMTP AUTENTICADO
      $mail->Username = ""; //EMAIL PARA SMTP AUTENTICADO (pode ser qualquer conta de email do seu domínio)
      $mail->Password = ""; //SENHA DO EMAIL PARA SMTP AUTENTICADO
      $mail->From = $email; //E-MAIL DO REMETENTE 
      $mail->FromName = $nome; //NOME DO REMETENTE
      $mail->AddAddress($para); //E-MAIL DO DESINATÁRIO, NOME DO DESINATÁRIO --> AS VARIÁVEIS ALI PODEM FAZER REFERÊNCIA A DADOS VINDO DE $_GET OU $_POST, OU AINDA DO BANCO DE DADOS
      $mail->WordWrap = 50; // ATIVAR QUEBRA DE LINHA
      $mail->IsHTML(true); //ATIVA MENSAGEM NO FORMATO HTML
      $mail->Subject = $assunto; //ASSUNTO DA MENSAGEM
      $mail->Body = "<table width='628' height='205' border='0'bgcolor='#D1DCED'>
             <tr>
            <td width='73'>Nome:</td>
            <td width='539'>$nome</td>
             </tr>
             <tr>
            <td>Email:</td>
            <td>$email</td>
             </tr>
             <tr>
            <td>Assunto:</td>
            <td>$assunto</td>
             </tr>
             <tr>
            <td>&nbsp;</td>
            <td>&nbsp;</td>
             </tr>
             <tr>
            <td colspan='2'>Mensagem</td>
             </tr>
             <tr>
            <td colspan='2'>$msg</td>
             </tr>
            </table>"; //MENSAGEM NO FORMATO HTML, PODE SER TEXTO OU IMAGEM
      
      
      // verifica se está tudo ok com oa parametros acima, se nao, avisa do erro. Se sim, envia.
      if($mail->Send())   { 
       echo "<div align='center'>Mensagem enviada!</div>";
      
      }else{
       echo "<div align='center'>Mensagem não enviada!</div>";
	  
      }

} 

?>
<!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" xml:lang="pt-br" lang="pt-br">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Script que envia e-mail</title>
</head>
<body>
	<div align="center"><?php if(isset($erro)){ echo $erro; }  ?></div>
</body>
</html>