Estamos de volta com mais um tutorial sobre emails em PHP. Desta vez, iremos utilizar a classe PHPMailer para enviar um email com anexo por SMTP.
Em primeiro lugar, baixe a classe aqui: Download
Feito isso, copie os arquivos "class.phpmailer.php" e "class.smtp.php" para uma pasta qualquer no servidor. No tutorial esta pasta será chamada de classes.
Vamos agora criar o formulário. Crie um arquivo com o nome de email.php e digite o código abaixo:
<?php
if(isset($_POST['acao']) && $_POST['acao'] == 'enviar'){
require('enviar.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=iso-8859-1" />
<title>Formulário de Contato</title>
</head>
<body>
<?php
if(isset($msg))
echo "<p id=\"msg\">$msg</p>";
?>
<form action="" method="post" enctype="multipart/form-data">
<fieldset>
<legend>Formulário de Contato</legend>
<label>
<span>Nome</span>
<input type="text" name="nome" />
</label>
<label>
<span>E-mail</span>
<input type="text" name="email" />
</label>
<label>
<span>Titulo</span>
<input type="text" name="titulo" />
</label>
<label>
<span>Mensagem</span>
<textarea name="mensagem" cols="30" rows="5"></textarea>
</label>
<label>
<span>Arquivo</span>
<input type="file" name="arquivo" />
</label>
<input type="hidden" name="acao" value="enviar" />
<input type="submit" value="Enviar Formulário" class="btn"/>
</fieldset>
</form>
</body>
</html>
Com o formulário criado, vamos agora criar o arquivo que envia o email (usando a classe PHPMailer). Crie um arquivo com o nome de enviar.php e digite o código abaixo:
<?php
$nome = strip_tags(trim($_POST['nome'])); //pega o nome do form
$email = strip_tags(trim($_POST['email'])); //pega o email do form
$titulo = strip_tags(trim($_POST['titulo'])); //pega o titulo do form
$mensagem = strip_tags(trim($_POST['mensagem'])); //pega a mensagem do form
$arquivo = $_FILES['arquivo']; //pega o arquivo do form
$tamanho = 512000; //define o tamanho máximo do arquivo, em bytes, aqui definido em 512000 bytes, ou seja, 500KB
//verifica se todos os campos estão preenchidos, se não estiverem, não envia o email
if(empty($nome)){
$msg = 'O Nome é Obrigatório';
}elseif(!filter_var($email, FILTER_VALIDATE_EMAIL)){
$msg = 'Digite um E-mail válido';
}elseif(empty($titulo)){
$msg = 'O Título é Obrigatório';
}elseif(empty($mensagem)){
$msg = 'A Mensagem é Obrigatória';
}elseif(!is_uploaded_file($arquivo['tmp_name'])){
$msg = 'O Arquivo é Obrigatório';
}elseif($arquivo['size'] > $tamanho){
$msg = 'O limite do tamanho do arquivo é de 500KB';
}else{ //se todos os campos estiverem preenchidos, configura e envia o email
require('classes/class.phpmailer.php'); //carrega a classe phpmailer, altere para a pasta onde se encontra o arquivo "class.phpmailer.php"
$mail = new PHPMailer(); //instancia a classe PHPMailer
$mail->IsSMTP(); //define que o email será enviado por SMTP
$mail->SMTPAuth = true; //define que tem autenticação smtp
$mail->Port = 25; //define a porta do servidor smtp - altere para a porta que seu servidor usa
$mail->Host = 'smtp.seusite.com.br'; //define o servidor smtp - altere para o seu servidor smtp
$mail->Username = 'login@seusite.com.br'; //define o nome de usuario do servidor smtp, altere para o seu usuário
$mail->Password = '123546'; //define a senha do servidor smtp, altere para a sua
$mail->SetFrom('webmaster@seusite.com.br', 'Seu Site'); //define o remetente da mensagem, altere para o real
$mail->AddAddress('destino@provedor.com', 'nome'); //define o destino da mensagem, altere para o desejado
$mail->Subject = 'Formulário de Contato'; //define o assunto da mensagem
$body = "<b>Nome</b> :{$nome}
<b>E-mail</b> :{$email}
<b>Titulo</b> :{$titulo}
<b>Mensagem</b> :{$mensagem}
<b>Arquivo</b> : ".$arquivo['name'];
//a variavel $body define o corpo da mensagem
$mail->MsgHTML($body); //configura o email como HTML
$mail->AddAttachment($arquivo['tmp_name'], $arquivo['name']); //adiciona o anexo
if($mail->Send()) //tenta enviar o email
$msg = 'Sua Mensagem foi enviada com Sucesso!!!'; //se conseguir, exibe a mensagem aqui definida
else
$msg = 'Sua Mensagem não foi enviada, tente novamente'; //se não conseguir, exibe a mensagem aqui definida
}
?>
Pronto, você já tem um formulário que envia email com o php, utilizando a classe PHPMailer.
meu amigo pode me ajudar nesta classe p phpmailler como eu envio usando o localhost e nao usando smtp os dados de um formulario
ResponderExcluir