Enviar email com o PHP

Filed Under (PHP) by Cristian Trentin on 25-06-2009

Muitos desenvolvedores fazem uso da função mail Link Externo do PHP para o envio de e-mail, já a galera da programação Orientada a Objetos monta suas classes de envio.

Porem não é todo mundo que conhece a classe PHPMailerLink Externo, com ela é possível o envio de emails sem autenticação e com autenticação no servidor, ela é simples e muito fácil de usar. Envie anexos em seus email de olhos fechados!

Vamos a um exemplo, lembrando que não vou mostrar como montar um formulário e pegar esses dados por $_POST ou $_GET no PHP, Cristian mas eu não sei fazer isso! Não sabia, aqui você irá aprenderLink Externo
!
Usando o PHPMailer

/**********************************************************************
* Arquivo: CONTATO-ENVIAR.php *
* Data: 12/06/2009 *
* Autor: Cristian Trentin - admderede@gmail.com *
**********************************************************************/

//Requere o arquivo de Configuracao do Sistema
require_once("include/class.phpmailer.php")/

$nome = isset($_POST['nome']) ? trim(addslashes($_POST['nome'])) : '';
$email = isset($_POST['email']) ? trim(addslashes($_POST['email'])) : '';
$assunto = isset($_POST['assunto']) ? trim(addslashes($_POST['assunto'])) : '';
$msg = isset($_POST['msg']) ? trim(addslashes($_POST['msg'])) : '';

$phpMailer = new PHPMailer();

$phpMailer->SetLanguage("br");

$phpMailer->IsMail(); //Seta o metodo de envio dessa msg, a mail é padrão não precisa nem setar
$phpMailer->IsHTML(true); //Passando HTML true, isso permite usar HTML no corpo do email, pois o PHPMailer monta o Header da msg diferente do padrão

$phpMailer->From = $email; //Seta email remetente
$phpMailer->FromName = $nome; //Seta nome remetente
$phpMailer->AddAddress("contato@cristiantrentin.com.br"); //Seta destino da msg, aqui pode ser passado 'N' emails de destino
$phpMailer->AddReplyTo("contato@cristiantrentin.com.br"); //Responder para
$phpMailer->Subject = 'Mensagem do Site - '.$assunto; //Monta assunto da msg
$phpMailer->Body = $msg; //Seta a msg

//Verifica o envio
if( $Email->Send() ){

print 'Mensagem enviada, aguarde nosso contato.';

}else{

print 'Mensagem não enviada, tente novamente daqui alguns segundos.';

}
?>

*Lembrando que o código acima só irá funcionar se hospedado.

Mas e quando precisamos enviar emails autenticados com o SMTP?


/**********************************************************************
* Arquivo: CONTATO-ENVIAR.php *
* Data: 12/06/2009 *
* Autor: Cristian Trentin - admderede@gmail.com *
**********************************************************************/

//Requere o arquivo de Configuracao do Sistema
require_once("include/class.phpmailer.php")/

require_once('../class.phpmailer.php');

$mail = new PHPMailer();

$phpMailer->IsSMTP(); // seta que o envio é por SMTP
$phpMailer->Host = "mail.seudominio.com.br"; // SMTP server
$phpMailer->SMTPAuth = true; // Habilita a autenticação

$phpMailer->Port = 25; // seta a porta de conexão
$phpMailer->Username = "seuemail@seudominio.com.br"; // usuario de conexão com o SMTP
$phpMailer->Password = "senha"; // senha do usuario conexão com o SMTP

//Dados Remetente
$phpMailer->From = 'Cristian';
$phpMailer->FromName = 'contato@cristiantrentin.com.br';

$phpMailer->AddReplyTo("contato@cristiantrentin.com.br"); //responder para

//Destinatario
$phpMailer->AddAddress('email@destino.com.br');

$phpMailer->Subject = "TESTE SMTP"; //assunto

$phpMailer->Body = 'Esse é um teste de envio';

$phpMailer->AddAttachment("relatorio.pdf"); // anexo

if( $phpMailer->Send() )
print 'Msg enviada';
else
print 'Msg não enviada, tente novamente';

?>

Também é possível o envio de email autenticados usando o GmailLink Externo, só lembrando você de habilitar no php.ini a extension ‘;extension=php_openssl.dll’.

Links interessantes

Bom pessoal é isso, para quem quer dar uma estudada ainda de uma procurada em envio de emails via socket, uma maneira uma pouco mais complexa para o envio de emails, lembrando apenas que o PHPMailer já faz isso para você.

*A Indentação Link Externo do código ficou estranha com esse plugin de code que estou usando, vou resolver isso logo logo…
[]s

Comentários:

(5) Comentários

Manda bala no seu comentário