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 co...
Publicado em: 22 de junho de 2009 | Leituras: 5.917 |
Canal: PHP |
Autor: Gabriel Pinheiro
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:
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:
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
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:
<?php
/* 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" rel="nofollow" target="_blank">;
$recebemail = $_POST['email" rel="nofollow" target="_blank">;
$recebemsg = $_POST['mensagem" rel="nofollow" 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 "<script>alert('Nenhum campo pode ficar em branco.');</script>";
echo "<script>history.go(-1);</script>";
}
// Validando o campo com E-mail
if (substr_count($recebemail,"@") == 0 || substr_count($recebemail,".") == 0)
{
echo "<script>alert('Por favor, utilize um e-mail válido');</script>";
echo "<script>history.go(-1);</script>";
}
// 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 = "<h3>De:</h3> ";
$mensagem .= $recebenome . $recebemail;
$mensagem .= "<h3>Assunto:</h3>";
$mensagem .= "Mensagem do Site";
$mensagem .= "<h3>Mensagem</h3>";
$mensagem .= "<p>";
$mensagem .= $recebemsg;
$mensagem .= "</p>";
// 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 = "<p>Olá <strong>" . $recebenome . "</strong>. 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.</p>n";
$mensagem2 .= "<p>Observação - Não é necessário responder esta mensagem.</p>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:
<?php
// 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 <atendimento@site.com.br>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 "<script>alert('E-mail enviado com sucesso!');</script>";
echo "<meta http-equiv='Refresh' content='0;URL=form_contato.php' />";
?> 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
Resposta em até 24 horas! (grátis)Dúvidas?
Autor da matéria
Últimas matérias escritas pelo autor:
|
Gabriel Pinheiro Gabriel Pinheiro é Programador PHP / MySQL, Webdesigner especialista nas ferramentas Adobe. Possui 6 anos de experiência no mercado, e atende clientes no Brasil e Exterior. |
Últimas matérias escritas pelo autor:
22/06 - Enviando um e-mail pelo site com respo...
19/06 - Como criar aplicações com PHP sem sabe...
18/06 - Economizando código com o Operador Ter...
15/06 - Como criar aplicações com PHP sem sabe...
08/06 - Como criar aplicações com PHP sem sabe...
05/06 - Instalando o Wampserver 2.0 para traba...
03/06 - Enviando um torpedo para celular atrav...
01/06 - Você sabe o que é Refurbished?
21/05 - Você sabe o que é um Blook?
04/03 - Simplificando sua vida no Flash - Paus...
16/02 - Criando Animações simples com Actionsc...
04/02 - Enviando um e-mail autenticado com php
06/10 - Adicionando ações nos botões de forma ...
31/03 - Como vender seu trabalho (Parte 2)
19/06 - Como criar aplicações com PHP sem sabe...
18/06 - Economizando código com o Operador Ter...
15/06 - Como criar aplicações com PHP sem sabe...
08/06 - Como criar aplicações com PHP sem sabe...
05/06 - Instalando o Wampserver 2.0 para traba...
03/06 - Enviando um torpedo para celular atrav...
01/06 - Você sabe o que é Refurbished?
21/05 - Você sabe o que é um Blook?
04/03 - Simplificando sua vida no Flash - Paus...
16/02 - Criando Animações simples com Actionsc...
04/02 - Enviando um e-mail autenticado com php
06/10 - Adicionando ações nos botões de forma ...
31/03 - Como vender seu trabalho (Parte 2)
Matérias relacionadas
Últimas matérias
Últimas notícias
Dicas do canal
- PHP: Formulário de contato com validação
Muita das vezes um iniciante na área de web usa ja... - Dicas para otimizar seu código PHP
ou falar aqui sobre algumas pequenas dicas que voc...







Enviando um torpedo para celular através do site, usando PHP
O que você procura para sua vida profissional?
O planejamento agrega valor
E-mail marketing em 140 caracteres
Novos iPods, novo iOS, novo iTunes e nova Apple TV
Conheça as 100 primeiras cidades atendidas pelo Banda Larga ...
Linus Torvalds diz que mercado já se rendeu ao Linux