Enviando email com anexos - PHPMailer

(0 - user rating)
User Rating:  / 0
PoorBest 
Details

Fala galera, beleza?

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:

Show/Hidden php code

View source
<?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&aacute;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:

Show/Hidden php code

View source
<?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.

Qualquer dúvida, só falar.

Até o próximo tutorial

   

Login