Enviando um e-mail pelo site com resposta automática e arquivo anexo

Algum tempo atrás, fui contactado por um cliente que precisava enviar um arquivo anexado ao e-mail para os clientes interessados em seu catálogo de produtos. Esse catálogo consistia num arquivo PDF com preços e imagens dos mesmos.

Por | @biel_pinheiro Programação
Olá Pessoal! Algum tempo atrás, fui contactado por um cliente que precisava enviar um arquivo anexado ao e-mail para os clientes interessados em seu catálogo de produtos. Esse catálogo consistia num arquivo PDF com preços e imagens dos mesmos.

Pesquisei muito, e depois de concluir o serviço, achei justo dividir essa pesquisa com todos. Segue abaixo o código PHP para enviar e-mail com arquivo em anexo:

Primeiramente, um código bem conhecido aqui no Oficina da Net:



/* Enviar E-mail com Resposta Automática
* Desenvolvido por: Gabriel Pinheiro
* Data: 04/12/2007
*/

// Recebendo os dados passados pela página "form_contato.php"

$recebenome = $_POST['nome" target="_blank">;
$recebemail = $_POST['email" target="_blank">;
$recebemsg  = $_POST['mensagem" target="_blank">;

/* Validando os dados do formulário
* Adicionado dia 14/01/2008
* Por: Gabriel Pinheiro
*/

// Proibindo que os campos fiquem em branco

if (($recebenome == "") || ($recebemail == "") || ($recebemsg == ""))
{
    echo "";
    echo "";
}

// Validando o campo com E-mail
if (substr_count($recebemail,"@") == 0 || substr_count($recebemail,".") == 0)
{
    echo "";
    echo "";
}

// Definindo os cabeçalhos do e-mail
$headers = "Content-type:text/html; charset=iso-8859-1";

// Vamos definir agora o destinatário do email, ou seja, VOCÊ ou SEU CLIENTE
$para = "seuemail@provedor.com";

// Definindo o aspecto da mensagem
$mensagem   = "

De:

";
$mensagem  .= $recebenome . $recebemail;
$mensagem  .= "

Assunto:

";
$mensagem  .= "Mensagem do Site";
$mensagem  .= "

Mensagem

";
$mensagem  .= "

";
$mensagem  .= $recebemsg;
$mensagem  .= "

";

// Enviando a mensagem para o destinatário
$envia =  mail($para,"E-mail do Site",$mensagem,$headers);

// Resposta Automática, preparando o e-mail com a resposta.
$mensagem2  = "

Olá " . $recebenome . ". Agradeçemos sua visita e a oportunidade de recebermos o seu contato. Em até 48 horas você receberá no e-mail fornecido a resposta para sua questão.

n";
$mensagem2 .= "

Observação - Não é necessário responder esta mensagem.

n";
?>


Só o que o trecho acima faz é receber as variáveis do formulário de contato e disparar os e-mails e a resposta automática. Ainda no mesmo arquivo, você deverá inserir o seguinte código para enviar um arquivo em anexo:


// Envia um e-mail para o remetente, agradecendo a visita no site, e dizendo que em breve o e-mail será respondido. Além disso, envia um arquivo .PDF em anexo.

$boundary = strtotime('NOW');

$headers = "From: Site n";
$headers .= "MIME-Version: 1.0n";
$headers .= "Content-Type: multipart/mixed; boundary="" . $boundary . ""n";

$msg = "--" . $boundary . "n";
$msg .= "Content-Type: text/html; charset="iso-8859-1"n";
$msg .= "Content-Transfer-Encoding: quoted-printablenn";  
$msg .= $mensagem2;
$msg .= "--" . $boundary . "n";
$msg .= "Content-Transfer-Encoding: base64n";
$msg .= "Content-Disposition: attachment; filename="endomarketing.pdf"nn";

ob_start();
readfile("endomarketing.pdf");
$enc = ob_get_contents();
ob_end_clean();

$msg_temp = base64_encode($enc). "n";
$tmp[1] = strlen($msg_temp);
$tmp[2] = ceil($tmp[1]/76);

for ($b = 0; $b <= $tmp[2]; $b++) {
    $tmp[3] = $b * 76;
    $msg .= substr($msg_temp, $tmp[3], 76) . "n";
}
unset($msg_temp, $tmp, $enc);
mail($recebemail, "Sua mensagem foi recebida!", $msg, $headers);
echo "";
echo "";
?>


O que essa parte final do script faz?
Simples: Ele envia um e-mail para a pessoa que efetuou o contato, neste e-mail está uma mensagem, e também um anexo de um arquivo, com um nome fictício de "endomarketing.pdf".

No geral, o administrador do site receberá um e-mail com o contado do cliente, e o cliente receberá uma resposta automática dizendo que sua mensagem foi recebida, e outro e-mail, agora com o arquivo em anexo.

Fazendo variações, é possível permitir que o próprio usuário escolha qual arquivo anexar, para enviar direto ao administrador do site. Porém não recomendo, uma vez que a incidência de vírus e outras pragas digitais podem fazer com que esse recurso deixe de ser inovador para ser desastroso.

Segue o material em anexo!

Forte abraço a todos, e até a próxima

Mais sobre: email, anexo, php
Share Tweet
DESTAQUESRecomendado
Mais compartilhados
Comentários