Enviar imagens em e-mail com PHP Mailer

Resultado da template deste exemplo:

email-resultado

Antes de tudo você deverá baixar o PHP Mailer e descompactar dentro da pasta de seu projeto, logo em seguida não se esqueça de incluir em seu arquivo .php

[code lang=”php”] <?php
require_once("phpmailer/class.phpmailer.php"); // requer a class do PHPMAILER

//envia e-mail de confirmação
$usuEmail = "joaodasilva@email.com.br"; // email para onde será enviado (destinatário)
$usuNome = "João da Silva"; // nome para quem será enviado (destinatário)

$mail = new PHPMailer();
$mail->isSMTP(); // send via SMTP
$mail->Host = ‘mail.seusite.com.br’; //Endereço do seu Servidor de Email
$mail->SMTPAuth = true; // true se o email é autenticado
$mail->Port = ‘587’; // Porta para autenticação smtp geralmente é a 587;
$mail->Username = ‘seuemail@seusite.com.br’; // Seu endereço de email que envia os email
$mail->Password = "SUA_SENHA"; // senha do usuário que envia o email

$mail->From = ‘seuemail@seusite.com.br’; //a pessoa que ta enviando o email

$mail->FromName = ‘NOME DO REMETENTE (ASSUNTO)’; //Nome de quem ta enviando…
$mail->AddAddress($usuEmail, $usuNome); //e-mail, nome
$mail->AddReplyTo("seuemail@seusite.com.br", "NOME DO MEU SITE/EMAIL"); //e-mail para respostas e nome do site ou email que receberá respostas

$mail->WordWrap = 50; // Quebra de linha
$mail->IsHTML(true); // Se for true é enviando email no formato HTML
$mail->Subject = "ASSUNTO DO EMAIL"; //Assunto do seu Email
$mail->Body = utf8_decode("
<meta charset=’utf-8’/>
<body>
<div style=’min-height: 250px;’>
<div style=’font: 14px Arial, Tahoma; padding: 0 0 30px 0; text-align: center; margin: 0 auto; border: 1px solid #d9d9d9; border-radius: 5px;’>
<img src=’cid:cabecalho’ width=’100%’/>
<h1>Ative sua conta</h1>
<p>Através de nosso website, você efetuou um cadastro.</p>
<p>Agora, para finalizar seu cadastro é necessário confirmar sua conta.</p>
<br><a href=’#’ style=’background: #006699; padding: 10px 20px 10px 20px; margin: 10px auto; color: #fff; text-decoration: none; font-weight: bold;’>Ative sua conta</a>
<br>
<p>Caso não esteja conseguindo utilizar este botão, copie e cole o link abaixo em seu navegador:</p><pre>meusite.com.br/ativar-conta </pre>

<img src=’cid:rodape’ width=’100%’/>

</div>
</div>
</body>

"); //Conteudo HTML
$mail->AltBody = "Para mensagens somente texto"; //Somente Texto

//adiciona arquivos em anexo
$mail->AddEmbeddedImage(‘pasta_da_imagem/cabecalho.jpg’, ‘cabecalho’);
$mail->AddEmbeddedImage(‘pasta_da_imagem/rodape.jpg’, ‘rodape’);

$envio = $mail->Send(); //envia o e-mail

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

// Exibe uma mensagem de resultado
if ($envio) { echo "enviado"; } else { echo "O e-mail não pode ser enviado, ocorreu um erro"; }

//

[/code]

O código funcional encontra-se acima, abaixo você encontrará apenas a explicação de como personalizá-lo e funcionamento.

Como é feito o anexo dos arquivos no e-mail?

É uma solução bem simples, se analisar bem você verá que todo o anexo dos arquivos pode ser feito com apenas um linha de código:

[code lang=”php”] //adiciona arquivos em anexo
$mail->AddEmbeddedImage(‘pasta_da_imagem/cabecalho.jpg’, ‘cabecalho’);
$mail->AddEmbeddedImage(‘pasta_da_imagem/rodape.jpg’, ‘rodape’);
[/code]

Caso queira adicionar mais anexos basta repetir a linha alterando o nome do arquivo e sua denominação. Ex.: $mail->AddEmbeddedImage('pasta_da_imagem/meuarquivo.jpg', 'nome_do_arquivo');

Como utilizar no HTML o anexo?

Para isto basta você utilizar cid:nome_do_arquivo, lembrando que após os dois pontos : você colocará o nome que você chamou seu arquivo ao anexá-lo no e-mail.

Não quero deixar a senha exposta

Se você deseja evitar de deixar a senha exposta no arquivo, utilize algumas codificações que não são de mão única, mesmo que simples podem dificultar um pouco para leigos e a senha não fica facilmente à mostra. Um bom exemplo é base64_encode() Você poderá utilizar algo como:

[code lang=”php”] $mail->Password = base64_decode("SUA_SENHA_CRIPTOGRAFADA_COM_BASE64_ENCODE");
[/code]
Este artigo está em