Artigos / Tekever.eu

Artigos de desenvolvimento e opinião em tecnologia.

Secções:

Linux | Windows | .NET / ASP | LAMP | Java | Só Conversa |

 


Utilizando a classe phpmailer

  2007-08-09




O envio de emails por dentro dos servidores, é uma tarefa que 100% entre 100% dos usuários, precisam. Enviar email é tarefa universal na internet. Partindo disso, vou ensinar um método muito mais eficiente de enviar emails online, do que simplesmente escrever a função mail toda vez.
Neste artigo, vou abordar a utilização da famosa classe PHPMailer (http://phpmailer.sourceforge.net/), para envio de emails.

Baixe a classe atualizada, no site mencionado. Apesar de não haver atualizações desde 2005, a classe é livre de bugs. E digo isso tendo a utilizado em mais de 50 sistemas, e inclusive em meu próprio site, tendo tido sempre 100% de aproveitamento!

De posse da classe, vamos criar um formulário de contato simples, parecido com este: http://www.flaviajobs.com.br/v6/contato.php

<form id="form1" name="form1" method="post" action="enviaemail.php">
Seu nome:
<label>
<input type="text" name="nome" />
</label>
<br />
Seu e-mail:
<label>
<input type="text" name="email" />
</label>
<br />
Assunto da mensagem:
<label>
<input type="text" name="assunto" />
</label>
<br />
Mensagem:
<label>
<textarea name="msg" cols="30" rows="5"></textarea>
</label>
<br />
<br />
<label>
<input type="submit" name="Submit" value="Enviar" />
</label>
</form>


Notando que na action do form, estamos passando os dados do formulário (via POST) para a página enviaemail.php.
Sendo assim, vamos vê-la agora.

enviaemail.php
Neste trecho, vamos ver itens indispensáveis, para a configuração das opções de envio do email.

// chamada da classe phpmailer
require_once('class.phpmailer.php');
 
// resgatando os dados passados pelo form
$nomeusuario = $_POST['nome'];
$emailusuario = $_POST['email'];
$assunto = $_POST['assunto'];
$mensagem = $_POST['msg'];
 
// faço a chamada da classe
$Email = new PHPMailer();
// na classe, há a opção de idioma, setei como br
$Email->SetLanguage("br");
// esta chamada diz que o envio será feito através da função mail do php. Você
mudar para sendmail, qmail, etc
// se quiser utilizar o programa de email do seu unix/linux para enviar o email
$Email->IsMail();
// ativa o envio de e-mails em HTML, se false, desativa.
$Email->IsHTML(true);
// email do remetente da mensagem
$Email->From = $emailusuario;
// nome do remetente do email
$Email->FromName = $nomeusuario;
// Endereço de destino do emaail, ou seja, pra onde você quer que a mensagem do
formulário vá?
$Email->AddAddress("flavia@flaviajobs.com.br");
// informando no email, o assunto da mensagem
$Email->Subject = $assunto;
 
// Define o texto da mensagem (aceita HTML)
$Email->Body .= "<B>E-mail enviado por usuário<BR></b>";
$Email->Body .= "Mensagem do usuário: $msg<BR><BR>";
 

Feito o trecho principal acima, onde pegamos os dados, e formatamos o envio da mensagem, vamos concluir o script, fazendo o trecho que envia o email propriamente dito. Mais simples, impossível:
// verifica se está tudo ok com oa parametros acima, se nao, avisa do
erro. Se sim, envia.
if(!$Email->Send())
{
echo "A mensagem não foi enviada. <p>";
echo "Erro: " . $mail->ErrorInfo;
}


O que este Send faz, nada mais é, do que montar pra você o envio do email, através da função mail ou pelo sendmail da sua máquina (dependendo do que estava setado lá no começo), e enviando a mensagem.
Esta classe é bastante flexível. Para enviar um email com cópia oculta, adicione a linha:
$Email->AddBcc("meu@segundoemail.com.br");


Se quiser enviar anexos (vou abordar em breve, o envio de anexos, através desta classe, aguarde.), através do formulário, vai utilizar o seguinte

$Email->AddAttachment();


Se ainda, quiser utilizar smtp para envio do email:

// troque esta linha
$Email->IsMail();
// por esta
$Email->SmtpSend();


Para o envio através de smtp, abra a classe, e na linha 460 (se vc não tirou créditos nem mexeu em nada..) e altere o seguinte:

// mude aqui, o endereço do seu servidor, ou inclua uma classe de smtp,
como indicado abaixo
include_once($this->PluginDir . "class.smtp.php");


É isso. Espero que seja tão útil pra você, como é pra mim. Em breve irei mostrar como enviar anexos e enviar emails com outras opções através desta classe.
Dúvidas: me escrevam no fjferr@gmail.com ou postem aqui!





Escrito por Flávia Jobstraibizer
Dados do autor: Analista de sistemas, especialista em servidores FreeBSD, desenvolvedora PHP e DBA Mysql/MSSQL/PostgreSQL. Conheça o site www.flaviajobs.com.br

Comentários

Comentários a este artigo

Enviado em 2008-03-13 por dejair priebe da silva
Muito bom este tutorial, estou com algumas dificuldades em aplicar esta classe, gostaria de manter um contato com a Flávia, para um help quando necessário.

Faça um comentário

Comentário

Nome
E-mail

Este comentário só ficará válido depois de fazer clique no link que lhe será enviado já a seguir para o e-mail indicado. Como tal garanta que o seu e-mail está válido e operacional, se não receber o nosso e-mail verifique os seus filtros de SPAM, ou a caixa de Lixo/Trash do seu cliente de e-mail.

 

Avaliar artigo

Avalie este artigo

 



Nome
E-mail

Este voto só ficará contabilizado depois de fazer clique no link que lhe será enviado já a seguir para o e-mail indicado. Como tal garanta que o seu e-mail está válido e operacional, se não receber o nosso e-mail verifique os seus filtros de SPAM, ou a caixa de Lixo/Trash do seu cliente de e-mail.

 

 

 

 

Recomendar este artigo a alguém

Envie a alguém conhecido

De:  
Nome E-mail
 
Para:  
Nome E-mail
Será enviado um link da página deste artigo para o e-mail que indicar como destino.