Enviando um e-mail pelo site com resposta automática e arquivo anexo
Canal: PHP | Autor: Gabriel Pinheiro | Publicado em: 22/06/2009 | Views: 3.841Olá 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
Esta obra está licenciada sob uma Licença Creative Commons. Você pode copiar, distribuir, exibir, executar, desde que seja dado
crédito ao autor original (Citando nome do autor, data, local e link de onde tirou o texto). Você não pode fazer uso comercial desta obra.
Você não pode criar obras derivadas.
Vote no artigo:
NR. DE VOTO(S): [1]
Artigo anterior
Estilização dinâmica com PHP
Vamos aprender como fazer para oferece. Próximo artigo
SQL Server + PHP: Conexão ao b.
O SQL Server pode ser utilizado com PH.
Estilização dinâmica com PHP
Vamos aprender como fazer para oferece. Próximo artigo
SQL Server + PHP: Conexão ao b.
O SQL Server pode ser utilizado com PH.









Parabens pelo topico
Abraços
Warning: mail(): SMTP server response: 550.5.7.1 <xxxxx@xxxx.com.br> ... we do not relay <xxxxxx@xxxxx.com.br> in (...)
Pode me ajudar?
Pela mesagem de erro o seu envio pela função mail() está desconfigurada ou não está encontrando o email corretamente