Depois de algumas semanas corridas com muitos freelas estou voltando a publicar um artigo aqui no blog.
Nome:<br/>
<input name=“fale[nome]“ type=“text” value=“” />
E-mail:<br/>
<input name=“fale[email]“ type=“text” value=“” />
<input name=“fale[assunto]“ type=“text” value=“” />
Mensagem: <br/>
<textarea name=“fale[mensagem]“></textarea>
<input name=“enviar” type=“submit” value=“Enviar” />
</form>
Não esqueça de declarar a action do formulário com o nome do arquivo que vamos criar agora, enviar.php.
3º Passo – Criar o arquivo de envio
include(“phpmailer/class.phpmailer.php”);
$dados = $_REQUEST['fale'];
$mail = new PHPMailer();
$mail->IsMail(true);
$mail->IsHTML(true);
$mail->From = $dados['email'];
$mail->FromName = $dados['nome'];
$mail->AddAddress(“fel.prog@gmail.com”,“Felipe Oliveira”);
$mail->Subject = “Fale conosco – “.$dados['assunto'];
$mail->Body = “<b>Nome:</b> “.$dados['nome'].” <br /><br /><b>E-mail:</b> “.$dados['email'].” <br /><br /><b>Mensagem:</b> “.$dados['mensagem'];
if($mail->Send())
echo “E-mail enviado com sucesso”;
else
echo “Erro ao enviar e-mail, tente novamente mais tarde.”;
?>
Linha 2: Chamamos o include da classe PHPMailer
Linha 3: Pegamos os dados digitados no formulário
Linha 4: Instanciamos a classe PHPMailer
Linha 5: Caso queira utilizar o programa de e-mail do seu servidor unix/linux para o envio de e-mail. Caso seja servidor windows o e-mail precisa ser enviado via STMP, então ai invéz de utilizar a função $mail->IsMail() utilizamos $mail->IsSMTP()
Linha 6: Ativa o envio de e-mail no formato html, se false desativa
Linha 7: E-mail do remente da mensagem
Linha 8: Nome do remente da mensagem
Linha 9: E-mail que vamos enviar a mensagem
Linha 10: Assunto da mensagem
Linha 11: Corpo da mensagem
Linha 12: Enviamos a mensagem
Linha 13: Mensagem do envio realizado com sucesso
Linha 15: Mensagem de erro, caso não seja possível enviar a mensagem
Com o PHPMailer também é possível fazer o envio via SMTP, basta adicionar alguns itens:
$mail->IsSMTP();
#Configuramos a conexão ao SMTP
$mail->Host = “smtp.dominio.com.br”;
$mail->SMTPAuth = true; // Ativa a autenticação do usuário
#Configuramos o login e senha de conexão a conta SMTP
$mail->Username = “email@dorminio.com.br”;
$mail->Password = “senha”;
Outros itens:
$mail->AddBcc(email@dominio.com.br); // Adiciona cópia oculta
$mail->AddAttachment(); // Para enviar anexos
Clique aqui para fazer o download dos arquivos usados nesse tutorial

03 de abril de 2009 às 16:33
Cara, eu não consigo enviar e-mail com autenticação do gmail.
Poderia ajudar?
06 de abril de 2009 às 15:16
Amigo,
Para enviar com o gmail você precisa baixar a última versão do PHPMailer e fazer algumas alterações.
Segue o link do tutorial:
https://www.google.com/accounts/ServiceLogin?passive=true&service=groups2&continue=http://groups.google.com.br/group/listaphp/msg/8ebb65c126406e14&cd=BR&hl=pt-BR
Qualquer dúvida estou a disposição.
06 de abril de 2009 às 18:01
Rutemberg,
Aqui esta a solução:
<?php
require_once "phpmailer/class.phpmailer.php";
$mail = new PHPMailer ();
$mail -> From = "seu_email@gmail.com";
$mail -> FromName = "Nome que envia";
$mail -> AddAddress ("email_que_recebe@gmail.com");
$mail -> Subject = "Email usando SMTP do Google";
$mail -> Body = "<h4>Email enviado do Gmail.</h4>";
$mail -> IsHTML (true);
$mail -> IsSMTP();
$mail -> Host = "ssl://smtp.gmail.com";
$mail -> Port = 465;
$mail -> SMTPAuth = true;
$mail -> Username = "email_que_envia@gmail.com";
$mail -> Password = "senha_do_email";
if(!$mail->Send()) {
echo "Erro:".$mail->ErrorInfo;
}
else {
echo "Email enviado!";
}
?>
14 de maio de 2009 às 22:45
Muito Bom este tutorial…
10 de junho de 2009 às 11:13
Muito bom!!
Pessoas como você, que simplificam a vida de milhares de pessoas sem pensar em retorno, são de se admirar!!
29 de junho de 2009 às 22:16
Olá Felipe.
Usei o seu código e deu certo, achei bem simples e fácil de entender! Só que ocorreu um probleminha, talvez você possa me ajudar.
O formulário de contato do meu site tem 4 campos, quando recebo o e-mail na minha caixa de entrada, as informações digitadas nos campos chegam, só que apenas a 1° letra digitada em cada campo do formulário.
Tem alguma idéia do porque isto ocorre?
30 de junho de 2009 às 11:32
Opa! Deu certo!
Desculpa, eu tinha esquecido de revisar o formulário de contato e acabou ocasionando um erro de digitação, agora ta tudo funcionando!
Valeu pelo código Felipe, é um dos poucos na internet que funcionam sem ter que mudar quase nada! Parabéns!!! ^^v
24 de julho de 2009 às 09:39
Olá Felipe,
ver só quando entro na página de contato já envia um e-mail sem eu ao menos enviar o que posso fazer?
24 de julho de 2009 às 10:00
Dreyson,
Você apenas que visualizar quem entrar na sua página de contato?
Se for isso é só usar o Google Analytics.
abs,
Felipe
28 de julho de 2009 às 11:02
Oi Felipe,
desculpe esta postando novamente. Resolvi este caso, mas tenho outro que esta me quebrando o formulário de contato esta correto, mas não esta chegando acentuações da uma olha ai no meu código por favor.
Código PHP
contato
Obrigado por entrar em contato com a Recife Tecnologia Breve entraremos em contato com você. <<Voltar a home
IsSMTP();
// Seu servidor smtp
$mail->Host = “mail.recifetecnologia.com.br”;
// habilita smtp autenticado
$mail->SMTPAuth = true;
// usuário deste servidor smtp
$mail->Username = “dreyson@recifetecnologia.com.br”;
$mail->Password = “910817″; // senha
//email utilizado para o envio
//pode ser o mesmo de username
$mail->From = “dreyson@recifetecnologia.com.br”;
$mail->FromName = “FORMULÁRIO DE CONTATO DO SITE”;
//Enderecos que devem ser enviadas as mensagens
$mail->AddAddress(“dreyson@recifetecnologia.com.br”,”DREYSON SANTIAGO”);
//wrap seta o tamanhdo do texto por linha
$mail->WordWrap = 50;
//anexando arquivos no email
$mail->AddAttachment(“anexo/arquivo.zip”);
$mail->AddAttachment(“imagem/foto.jpg”);
$mail->IsHTML(true); //enviar em HTML
header(“Content-Type: text/html; charset=ISO-8859-1″, true);
// recebendo os dados od formulario
if(isset($_POST['nome']) && isset($_POST['email']) && isset($_POST['tel']) && isset($_POST['mensagem'])){
$nome = ucwords($_POST['nome']);
$email = $_POST['email'];
$tel = $_POST['tel'];
$mensagem = $_POST['mensagem'];
// informando a quem devemos responder
//ou seja para o mail inserido no formulario
$mail->AddReplyTo(“$email”,”$nome”);
//criando o codigo html para enviar no email
//voce pode utilizar qualquer tag html ok
$msg = “”;
$msg .= “ Nome: $nome\n”;
$msg .= “ E-mail: $email\n”;
$msg .= “ TEL: $tel\n”;
$msg .= “ Mensagem: $mensagem\n”;
}
$mail->Subject = “CONTATO DO SITE”;
//adicionando o html no corpo do email
$mail->Body = $msg;
//enviando e retornando o status de envio
if(!$mail->Send())
{
echo “houve um erro ao enviar o email! “.$mail->ErrorInfo;
//$mail->ErrorInfo informa onde ocorreu o erro
exit;
}
?>
Obrigado pela atenção cara.
28 de julho de 2009 às 11:04
Cara ocorreu um erro ai desculpe
código HTML meu topo esta assim.
28 de julho de 2009 às 12:26
Dreyson,
Experiemnta trocaro o HEADEr para UTF-8.
Se não funcionar você rpecisa converter os caracteres para UTF-8 com a função utf8_encode().
abs,
Felipe
30 de julho de 2009 às 11:46
não mexo muito com PHP não, mas coloquei o código para UTF-8, mas não funcionou essa função que você passou como posso utilizar?
Obrigado pela atenção!!
30 de julho de 2009 às 22:42
Dreyson,
Seria essa função:
http://www.php.net/manual/pt_BR/function.utf8-encode.php
Você teria que converter todas as variáveis, exemplo:
$nome = utf8_encode($nome);
abs,
Felpe
21 de outubro de 2009 às 23:37
Felipe, parabéns pelo tutorial. Estou tendo um problema. Entrei no banco um endereço absurdo de e-mail para gerar erro e ele diz que foi enviado com sucesso.. O que poderia estar errado?
Obrigado
05 de novembro de 2009 às 13:28
ola Felipe estou tentando criar um email mas nao consigo saber se é no php que ponho que ponho este codigo e qual seria o resto do codigo para eu enviar a mensagem
Nome
Email
Telefone
Assunto
07 de novembro de 2009 às 00:15
Não consegui entendrr, pode explicar novamente?
Se preferir meu e-mail é: fel.prog@gmail.com
15 de novembro de 2009 às 13:57
Felipe,
Testei este seu formulário colocando diversos emails diferentes no campo Email do formulário e percebi que com os emails da Hotmail dá problema de envio. Você sabe porque?
01 de dezembro de 2009 às 00:25
Olá Filipe ,
Estava testando seu script e no yahoo e hotmail os emails entram como spam ou lixo eletrônico como faço para eles chegarem na entrada principal da caixa.
01 de dezembro de 2009 às 08:52
Anderson,
Faça o envio via SMTP, isso pode ajudar.
Abs,
Felipe
27 de janeiro de 2010 às 10:13
Eu utilizei o script em duas páginas, em uma das páginas o email vai para a caixa de entrada e na outra vai para o lixo eletrônico. Por que será que isso está ocorrendo? Tem haver com o tamanho da mensagem?
27 de janeiro de 2010 às 10:17
Gilmar,
Se você enviar o e-mail mais de uma vez isso pode ocorrer porque o e-mail entende como SPAM.
Ou também pode ser o e-mail que esta configurado no
$mail -> From = “seu_email@gmail.com”;
$mail -> FromName = “Nome que envia”;
Se for um e-mail de SPAM. Utilize o mesmo e-mail nos dois scrips.
Abs,
Felipe
27 de janeiro de 2010 às 11:40
Obrigado pela ajuda Felipe, vou dar uma verificada na configuração do e-mail.
Porém o script que está funcionando bem eu o enviei duas vezes em seguida (para hotmail) e foi de boa, mas Yahoo nenhum dos dois scripts estão enviando, nem como spam.
Valeu!!!
Gilmar
27 de janeiro de 2010 às 17:59
Amigo,
Provavelmente o yahoo deve estar bloqueando. Ele é meio chato com isso.
Abs,
Felipe
26 de fevereiro de 2010 às 18:42
Ola Felipe, é possivel colocar auto resposta no phpMailer, varri o google e não achei usu a função mail(), mas essa me envia para lixo eletronico
02 de março de 2010 às 09:46
Warber,
Como assim uma auto resposta?
Assim que receber o e-mail enviar uma resposta para o usuário o qual enviou?
Se for isso acredito que seja melhor configurar o seu próprio e-mail.
abs,
Felipe
07 de maio de 2010 às 06:07
Felipe muito bom seu artigo
vamos ao problema heheheh…
Estou usando o phpmailer em um sistema de newsletter que criei.
Ele esta enviando para o hotmail, yahoo só que para o gmail os dados do form não chega o email só que vazio oque pode ser isso estou enviando com autenticação os email.
Abração
10 de maio de 2010 às 21:12
Emanuel,
Estranho isso, pois se aparece no YAHOO e HOTMAIL tb aparecerá no GMAIL.
Posta o código para eu dar uma olhada.
Abs,
Felipe
12 de abril de 2011 às 08:53
Felipe muito bom seu tutorial.
Estou precisando de um código para envio de resposta automatico com o phpmailer para colocar num formulário de contato.
Abraço
12 de julho de 2011 às 00:18
cara legal o tuto, mas teu action no form ta envia.php sem “R” e vc mandou salvar o arquivo com os scripts como enviar.php com “R”, bele??
abraço cara!
16 de maio de 2012 às 16:20
Envio varios emails para diferentes destinatarios e todos voltam para minha caixa de entrada(para o endereco de remetente), mas também chegam ao destinatario….
Como evitar este erro?
Imagina eu mandar 100 emails e todos chegarem ao destinatario e também pra mim?
Segue meu codigo em PHP:
IsSMTP();
$mail->Host = “smtp.meusiste.com.br”;
$mail->SMTPAuth = true;
$mail->Username = $usuario;
$mail->Password = $senha;
$mail->WordWrap = 50;
$mail->From = $_POST["emailremetente"];
$mail->FromName = $_POST["nomeremetente"];
$mail->CharSet=”iso-8859-1″;
$mail->AddAddress($emaildestinatario, utf8_decode($nomedestinatario));
$mail->IsHTML(true);
$mail->Subject = utf8_decode($_POST["assunto"]);
$mail->Body = utf8_decode($_POST["mensagememail"]);
$headers = “MIME-Version: 1.1\n”;
$headers .= “Content-Description: File Transfer\n”;
$headers .= “Content-type: text/html; charset=iso-8859-1\n”;
$headers .= “From: ” . “$nomeremetente” . ” \r\n”;
$mail->Send();
?>
Grato
Paulo
16 de maio de 2012 às 16:21
primeiras linhas faltaram:
<?php
require_once("phpmailer/class.phpmailer.php");
$mail = new PHPMailer();