Php

Php – Envio de e-mails com autenticação – Php Mailer na Locaweb

Tivemos a necessidade de enviar e-mails com anexo. Devida a pouca documentação da função nativa do php, buscamo uma classe mais robusta para o envio. Encontramos Php Mailer.

A classe pode ser baixada através do site: http://phpmailer.worxware.com/

O código foi adaptado da wiki da locaweb, que inclusive, algumas vezes se comporta como um braço direito do programador.

Abaixo o código html:

<form method="post" action="email/enviar-email.php" enctype="multipart/form-data">
<input type="HIDDEN" name="redirect" value="http://www.nossafarmaonline.com.br/msg_ok">
 <table width="48%" border="0">
 <tbody><tr>
 <td height="19" width="25%" style="text-align: right;">Nome:
 </td>
 <td height="19" width="75%">
 <input type="text" name="nome" style="width: 300px;">
 </td>
 </tr>
 <tr>
 <td height="19" width="25%" style="text-align: right;">E-mail:
 </td>
 <td height="19" width="75%">
 <input type="text" name="email" id="email" style="width: 300px;">
 </td>
 </tr>
 <tr>
 <td height="19" width="25%" style="text-align: right;">Telefone:</td>
 <td height="19" width="75%">
 <input type="text" name="telefone" style="width: 300px;">
 </td>
 </tr>
 <tr>
 <td height="19" width="25%" style="text-align: right;">Observação:</td>
 <td height="19" width="75%">
 <textarea name="observacao" style=" width: 324px; height: 130px; "></textarea>
 </td>
 </tr>
<tr>
 <td height="19" width="25%" style="text-align: right;">Seu anexo:</td>
 <td height="19" width="75%">
 <input type="file" name="arquivo" id="arqivo">
 </td>
 </tr>
<tr>
 <td height="19" width="25%">
 </td>
 <td height="19" width="75%">
 <input type="submit" name="Submit" value="Enviar">
 <input type="reset" name="Reset" value="Limpar">
 </td>
 </tr>
 </tbody></table>
</form>

Abaixo o código php:

<?php
ini_set('default_charset','UTF-8');
$nome = $_POST['nome'];
$email = $_POST['email'];
$telefone = $_POST['telefone'];
$observacao = $_POST['observacao'];
$arquivo = $_FILES["arquivo"];
$arquivo_nome = $arquivo['name'];
$arquivo_caminho = $arquivo['tmp_name'];
$redirect = $_POST["redirect"];

$mensagem = "NOME: $nome <br> EMAIL: $email <br> TELEFONE: $telefone <br> DATA ENVIO: ". date('d/m/Y h:i:s') ."<br><br> OBSERVAÇÃO: <br>$observacao";
// Inclui o arquivo class.phpmailer.php localizado na pasta phpmailer || TROQUE PELO SEU CAMINHO DA CLASSE
require_once('../lib/PHPMailer_5.2.1/class.phpmailer.php');

// Inicia a classe PHPMailer
$mail = new PHPMailer();
$mail->SMTPDebug = 2;
// Define os dados do servidor e tipo de conexão
// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
$mail->IsSMTP(); // Define que a mensagem será SMTP
$mail->Host = "smtp.SEUDOMINIO.com.br"; // Endereço do servidor SMTP (caso queira utilizar a autenticação, utilize o host smtp.seudomínio.com.br)
$mail->SMTPAuth = true; // Usar autenticação SMTP (obrigatório para smtp.seudomínio.com.br)
$mail->Username = 'JOAO@SEUDOMINIO.com.br'; // Usuário do servidor SMTP
$mail->Password = 'SUA_SENHA_DE_EMAIL'; // Senha do servidor SMTP

// Define o remetente
// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
$mail->From = "JOAO@SEUDOMINIO.com.br"; // Seu e-mail
$mail->Sender = "JOAO@SEUDOMINIO.com.br"; // Seu e-mail
$mail->FromName = "JOAO"; // Seu nome

// Define os destinatário(s)
// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
$mail->AddAddress('MARIA@hotmail.com');
//$mail->AddCC('ciclano@site.net', 'Ciclano'); // Copia
//$mail->AddBCC('fulano@dominio.com.br', 'Fulano da Silva'); // Cópia Oculta

// Define os dados técnicos da Mensagem
// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
$mail->IsHTML(true); // Define que o e-mail será enviado como HTML
$mail->CharSet = 'UTF-8'; // Charset da mensagem (opcional)

// Define a mensagem (Texto e Assunto)
// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
$mail->Subject = "MEU ASSUNTO"; // Assunto da mensagem
$mail->Body = $mensagem;
$mail->AltBody = 'AQUI VOCÊ PODE CONFIGURAR UMA MENSAGEM SEM FORMATAÇÃO HTML';

// Define os anexos (opcional)
// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
$mail->AddAttachment($arquivo_caminho, $arquivo_nome); // Insere um anexo

// Envia o e-mail
$enviado = $mail->Send();

// Limpa os destinatários e os anexos
$mail->ClearAllRecipients();
$mail->ClearAttachments();

// Exibe uma mensagem de resultado
if ($enviado) {
echo "E-mail enviado com sucesso!";
} else {
echo "Não foi possível enviar o e-mail.

";
echo "Informações do erro:
" . $mail->ErrorInfo;
}

header("Location: $redirect");

Dispensa muitas explicações, caso tenha problemas com o envio, comente a ultima linha, assim não será re-direcionado.

Anúncios
Padrão

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s