Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Enviar Email com Anexo
Como tem bastante usuarios com duvidas em "como enviar email com Anexo"
eu fiz esse formulario que envia email com anexo,e validação de email
email.html
[color= #009900;][url="http://december.com/html/4/element/html.html"][color= #0000BB;]<html>[/url]
[url="http://december.com/html/4/element/head.html"]<head>[/url]
[url="http://december.com/html/4/element/script.html"]<script[/url] language="javascript">
function checa_formulario(email){
if (email.nome.value == ""){
alert("Por Favor nao deixe o seu nome em branco!!!");
email.nome.focus();
return (false);
}
if (email.email_from.value == ""){
alert("Por Favor nao deixe o seu email em branco!!!");
email.email_from.focus();
return (false);
}
if (email.email.value == ""){
alert("Nao deixe o email destinatario em branco!!!");
email.email.focus();
return (false);
}
if (email.assunto.value == ""){
alert("Nao deixe o assunto em branco!!!");
email.assunto.focus();
return (false);
}
}
</script>
[url="http://december.com/html/4/element/title.html"]<title>[/url]Enviando texto</title>
[url="http://december.com/html/4/element/meta.html"]<meta[/url] http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
[url="http://december.com/html/4/element/style.html"]<style[/url] type="text/css">
<!--
.email {
text-transform: lowercase;
}
.texto {
color: #0000FF
}
.style1 {color: #FF0000}
-->
</style>
</head>
[url="http://december.com/html/4/element/body.html"]<body[/url] onload="document.email.nome.focus();">
[url="http://december.com/html/4/element/form.html"]<form[/url] onsubmit="return checa_formulario(this)" action="envia.php" method="post" enctype="multipart/form-data" name="email">
[url="http://december.com/html/4/element/h1.html"]<h1[/url] align="center" class="style1">Formulario de email com anexo </h1>
[url="http://december.com/html/4/element/table.html"]<table[/url] width="32%" border="0" align="center">
[url="http://december.com/html/4/element/tr.html"]<tr>[/url]
[url="http://december.com/html/4/element/td.html"]<td>[/url]Nome</td>
[url="http://december.com/html/4/element/td.html"]<td>[/url][url="http://december.com/html/4/element/input.html"]<input[/url] name="nome" type="text" id="nome"></td>
</tr>
[url="http://december.com/html/4/element/tr.html"]<tr>[/url]
[url="http://december.com/html/4/element/td.html"]<td[/url] width="33%">[url="http://december.com/html/4/element/div.html"]<div[/url] align="right" class="texto">De:</div></td>
[url="http://december.com/html/4/element/td.html"]<td[/url] width="67%">[url="http://december.com/html/4/element/input.html"]<input[/url] name="email_from" type="text" class="email"></td>
</tr>
[url="http://december.com/html/4/element/tr.html"]<tr>[/url]
[url="http://december.com/html/4/element/td.html"]<td>[/url][url="http://december.com/html/4/element/div.html"]<div[/url] align="right" class="texto">Para</div></td>
[url="http://december.com/html/4/element/td.html"]<td>[/url][url="http://december.com/html/4/element/input.html"]<input[/url] name="email" type="text" class="email">
</tr>
[url="http://december.com/html/4/element/tr.html"]<tr>[/url]
[url="http://december.com/html/4/element/td.html"]<td>[/url][url="http://december.com/html/4/element/div.html"]<div[/url] align="right" class="texto">Assunto</div></td>
[url="http://december.com/html/4/element/td.html"]<td>[/url][url="http://december.com/html/4/element/input.html"]<input[/url] name="assunto" type="text" id="assunto"></td>
</tr>
[url="http://december.com/html/4/element/tr.html"]<tr>[/url]
[url="http://december.com/html/4/element/td.html"]<td>[/url][url="http://december.com/html/4/element/div.html"]<div[/url] align="right" class="texto">Mensagem</div></td>
[url="http://december.com/html/4/element/td.html"]<td>[/url][url="http://december.com/html/4/element/textarea.html"]<textarea[/url] name="mensagem" cols="50" rows="10" id="mensagem"></textarea></td>
</tr>
[url="http://december.com/html/4/element/tr.html"]<tr>[/url]
[url="http://december.com/html/4/element/td.html"]<td>[/url][url="http://december.com/html/4/element/div.html"]<div[/url] align="right" class="texto">Anexo</div></td>
[url="http://december.com/html/4/element/td.html"]<td>[/url][url="http://december.com/html/4/element/input.html"]<input[/url] name="arquivo" type="file"></td>
</tr>
[url="http://december.com/html/4/element/tr.html"]<tr>[/url]
[url="http://december.com/html/4/element/td.html"]<td>[/url] </td>
[url="http://december.com/html/4/element/td.html"]<td>[/url][url="http://december.com/html/4/element/input.html"]esse script esta funcionando sem problemas nenhum o que pode ser é seu smtp
tem que ser um smtp valido
E onde eu vejo a config. do SMTP?No provedor ou no próprio código?
no seu servidor de email só perguntar que eles passam pra você
Aqui, funcionu perfeitamente, muito legal.
Alguém poderia me explicar mais ou menos esta parte de anexo do script ?
<!--php1--><div class='phptop'>PHP</div><div class='phpmain'><!--ephp1--><link href = "style_images/css_php.css" rel = "stylesheet" type = "text/css">
[*]<font color="#1C8C00">$arquivo</font> = <font color="#0080D5">isset</font>(<font color="#1C8C00">$_FILES</font>[<font color="#9C8501"><font color="blue"><font color="blue"><font color="blue"><font color="blue">"arquivo"</font></font></font></font></font>]) ? <font color="#1C8C00">$_FILES</font>[<font color="#9C8501"><font color="blue"><font color="blue"><font color="blue"><font color="blue">"arquivo"</font></font></font></font></font>] : FALSE;
[*]
[*]<font color="#0080D5"><font color="#000000">if</font></font>(<font color="#0080D5">file_exists</font>(<font color="#1C8C00">$arquivo</font>[<font color="#9C8501"><font color="blue"><font color="blue"><font color="blue">"tmp_name"</font></font></font></font>]) and !<font color="#0080D5">empty</font>(<font color="#1C8C00">$arquivo</font>)){
[*]
[*]<font color="#1C8C00">$fp</font> = <font color="#0080D5">fopen</font>(<font color="#1C8C00">$_FILES</font>[<font color="#9C8501"><font color="blue"><font color="blue"><font color="blue"><font color="blue">"arquivo"</font></font></font></font></font>][<font color="#9C8501"><font color="blue"><font color="blue"><font color="blue">"tmp_name"</font></font></font></font>],<font color="blue">"rb"</font>);
[*]<font color="#1C8C00">$anexo</font> = <font color="#0080D5">fread</font>(<font color="#1C8C00">$fp</font>,<font color="#0080D5">filesize</font>(<font color="#1C8C00">$_FILES</font>[<font color="#9C8501"><font color="blue"><font color="blue"><font color="blue"><font color="blue">"arquivo"</font></font></font></font></font>][<font color="#9C8501"><font color="blue"><font color="blue"><font color="blue">"tmp_name"</font></font></font></font>]));
[*]<font color="#1C8C00">$anexo</font> = <font color="#0080D5">base64_encode</font>(<font color="#1C8C00">$anexo</font>);
[*]
[*]<font color="#0080D5">fclose</font>(<font color="#1C8C00">$fp</font>);
[*]
[*]<font color="#1C8C00">$anexo</font> = <font color="#0080D5">chunk_split</font>(<font color="#1C8C00">$anexo</font>);
<!--php2--></div><!--ephp2-->
Valeu, até mais http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif
e para enviar mais de 1 anexo? da um exemplo onde o usuario digita qnts anexos qer enviar ou em um botao onde ele vai adicionando (como no uebimiau)
PHP
-
-
//se existir o upload ele vai ser passado para variavel $arquivo
-
//isset = verifica se existe a variavel e ? : é um if abreviado
-
$arquivo = isset($_FILES["arquivo"]) ? $_FILES["arquivo"] : FALSE;
-
-
// verifica se existe o arquivo na pasta tmp e se nao ta vazio
-
//quando faz o upload ele fica temporariamente numa pasta temp do servidor
-
if(file_exists($arquivo["tmp_name"]) and !empty($arquivo)){
-
-
//abro o arquivo para leitura e interpretado como binario o "rb" r é de somente leitura e o b é de binario
-
$fp = fopen($_FILES["arquivo"]["tmp_name"],"rb");
-
//fread Leitura de arquivo binario
-
$anexo = fread($fp,filesize($_FILES["arquivo"]["tmp_name"]));
-
//base64_encode Codifica dados com MIME base64
-
$anexo = base64_encode($anexo);
-
//fecha o arquivo
-
fclose($fp);
-
//Divide uma string em pequenos pedaços
-
//Pode dividir uma string em pequenos pedaços que são úteis para ex. converter a saída de base64_encode() para semânticas RFC 2045
-
$anexo = chunk_split($anexo);
e sobre mandar varios arquivos em anexo o sistema é o mesmo, só precisa ser criado um sistema que pegue os arquivos e renomeie e coloque num loop e passe a função neles ate acabar
qualquer duvida posta ai
Valeu cara. Me explica só mais uma coisa se possível...Para que ele tem que codificar os dados com MIME_base64 ?Nem sei o que é o MIME. Valeu
MIME Multipurpose Internet Mail Extension (MIME)
O MIME serve para que o servidor www informe no header dos dados a serem enviados como tratar os dados enviados.
Tenho algumas perguntas:Onde eu configuro o smtp localmente? pode ser usado um smtp grátis? Qual? Como posso usar o servidor smtp para enviar esses emails?
Consegui configurar para enviar e-mail, mas quando eu coloco pra enviar com anexo ele retorna o seguinte erro:
Warning: Server Error in c:\diego\phpdev\www\mail_attachment\mail.php on line 65
onde a linha 65 é:
mail($email,$assunto,$mens,$headers);
o que pode estar errado?
você fez algum modificação no script ?
posta a linha 65 pra gente ver
>
Tenho algumas perguntas:
Onde eu configuro o smtp localmente?
pode ser usado um smtp grátis? Qual?
Como posso usar o servidor smtp para enviar esses emails?
[](/topic/123954-formulario-de-email-com-anexo/?do=findComment&comment=349988)
1. no php.ini, procure a linha: SMTP = localhost, e troque pelo servidor, ex: smtp.uol.com.br2. tenho quase certeza que não existe smtp gratuito/aceite conexoes, por causa dos spammers...
3. voce pode instalar um servidor smtp na sua maquinha, ae o ip do servidor seria 127.0.0.1
abracos
onde encontro o php.ini
>
>
Tenho algumas perguntas:
Onde eu configuro o smtp localmente?
pode ser usado um smtp grátis? Qual?
Como posso usar o servidor smtp para enviar esses emails?
[](/topic/123954-formulario-de-email-com-anexo/?do=findComment&comment=349988)
1. no php.ini, procure a linha: SMTP = localhost, e troque pelo servidor, ex: smtp.uol.com.br2. tenho quase certeza que não existe smtp gratuito/aceite conexoes, por causa dos spammers...
3. voce pode instalar um servidor smtp na sua maquinha, ae o ip do servidor seria 127.0.0.1
abracos
[](/topic/123954-formulario-de-email-com-anexo/?do=findComment&comment=354056)
Fabio, deu certo! Muito obrigada http://forum.imasters.com.br/public/style_emoticons/default/clap.gif http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif http://forum.imasters.com.br/public/style_emoticons/default/grin.gif http://forum.imasters.com.br/public/style_emoticons/default/joia.gif
Fabyo no campo [ para ] gostaria de colocar uma caixa de escolha de emails. Como faco? fui fazer deu erro, você pode me ajudar?sayonara
Não posso usar um e-mail que seja webmail ? tem que ser POP3 ?pq o script funciona perfeitamente, mas o e-mail nunca chega no meu gmail...obrigado
coloquei o script na minha pagina mas nao funcionou, criei as duas páginas com o cogigo q peguei ak mas nao funcionou quando clico em enviar ele mostra a página do script, com todo o codigo fonte, com erros, acrescentei alguns pontos e virgula no final de algumas linhas de codigo, e o erro mudou diz agora so o seguinte.Parse error: parse error, unexpected T_ELSE in /home/moveis/public_html/envia.php on line 76a linha 76 é essaelse{o restante e esse//se nao tiver anexoelse{$headers = "MIME-Version: 1.0\r\n";$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";$headers .= "From: \"$nome\" <$email_from>\r\n";//envia o email sem anexomail($email,$assunto,$mensagem, $headers);vejam se podem me ajudar por favoar
e aí pessoal, tudo bem....bom... não sei praticamente nada de PHP.1º - quero saber se coloco os códigos juntos, o FORM seguido do PHP...se não... como faço?tentei criar um arquivo html e outro php e coloca-los no servidor mas não funcionou.. meu servidor tem suporte para php e é um servidor pago....por favor me ajudem...Obrigado
Olá.
Mto show este form !!!
Parabéns funcionou direitinhu!!! http://forum.imasters.com.br/public/style_emoticons/default/clap.gif
Mas Preciso de um help!!! :(
Num site que eu tenho (em Linux) funcionou ótimo!
Só que eu quero colocar este form num outro site que eu tô trab que é em Windows e portanto este form deve ser em asp.
Alguém conhece um jeito prá eu fazer este form em asp???
Espero resposta.
Valewss! http://forum.imasters.com.br/public/style_emoticons/default/joia.gif
Olá !!!Como colocar uma barra de status no momento do upload do arquivo?Seja em porcentagem ou em kb , pois quando o arquivo é muito grande, não é possível saber quando vai terminar.sdsRodrigo
>
>
Tenho algumas perguntas:
Onde eu configuro o smtp localmente?
pode ser usado um smtp grátis? Qual?
Como posso usar o servidor smtp para enviar esses emails?
[](/topic/123954-formulario-de-email-com-anexo/?do=findComment&comment=349988)
1. no php.ini, procure a linha: SMTP = localhost, e troque pelo servidor, ex: smtp.uol.com.br2. tenho quase certeza que não existe smtp gratuito/aceite conexoes, por causa dos spammers...
3. voce pode instalar um servidor smtp na sua maquinha, ae o ip do servidor seria 127.0.0.1
abracos
Voce pode sugerir um programa smtp para testar em minha maq. ?obrigado
Oi Pessoal!Consegui a solução!Quem quiser ver acessa o link aki do forum:http://forum.imasters.com.br/index.php?showtopic=130049&st=0Bjus
Olá.Mto show este form !!!Parabéns funcionou direitinhu!!! http://forum.imasters.com.br/public/style_emoticons/default/clap.gif Mas Preciso de um help!!! :( Num site que eu tenho (em Linux) funcionou ótimo!Só que eu quero colocar este form num outro site que eu tô trab que é em Windows e portanto este form deve ser em asp.Alguém conhece um jeito prá eu fazer este form em asp???Espero resposta.Valewss! http://forum.imasters.com.br/public/style_emoticons/default/joia.gif
Fabyo e pessoal, estou com um problema o envio nao funciona corretamente pois o conteudo do que estaria em $msg e $cabecalho nao é capturado pelo email.php no comando mail (so vai "email@email.com.br" e "Formulário de Contato Enviado pelo Site") , minha rotina email.php ficou assim:
email.php
//pego os dados enviados pelo formulario
$nom = $_POST["nome"];
$emai = $_POST["email"];
$telefon = $_POST["telefone"];
$mensage = $_POST["mensagem"];
$msg = "$nom\n";
$msg .= "$telefon\n";
$msg .= "$emai\n";
$msg .= "$mensage\n";
$cabecalho = "Para: destinatario\n";
echo "$nom";
mail("email@email.com.br","Formulário de Contato Enviado pelo Site",$msg,$cabecalho);
echo"<h1 align=center>Muito obrigado, $nome</h1>";
echo"<p align=center>Agradecemos seu Contato.</p>";
?>
minha rotina que chama o email.php chama-se contato.php e nela tem-se o seguinte:
****
contato.php
...
<tr>
<td height="25"> </td>
<td valign="top"><font size="2"><strong>Nome:</strong></font></td>
<td colspan="4" valign="top"><form name="nome" method="post" action="">
<input name="nome" type="text" id="nome" size="45">
</form></td>
<td> </td>
<td> </td>
</tr>
<tr>
<td height="15"></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td height="22"></td>
<td valign="top"><font size="2"><strong>Telefone:</strong></font></td>
<td colspan="3" valign="top"><form name="telefone" method="post" action="">
<input name="telefone" type="text" id="telefone" size="20">
</form></td>
<td> </td>
<td> </td>
<td></td>
</tr>
<tr>
<td height="17"></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td height="22"></td>
<td valign="top"><font size="2"><strong>email:</strong></font></td>
<td colspan="3" valign="top"><form name="email" method="post" action="">
<input name="email" type="text" id="email" size="30">
</form></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td height="14"></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td height="22"></td>
<td valign="top"><font size="2"><strong>Mensagem:</strong></font></td>
<td colspan="2" rowspan="2" valign="top"><form name="mensagem" method="post" action="">
<textarea name="mensagem" cols="45" rows="4"></textarea>
</form></td>
<td> </td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td height="60"></td>
<td> </td>
<td> </td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td height="22"></td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td height="24"></td>
<td></td>
<td valign="top"> <form method="post" action="email.php">
<input type="submit" name="Submit" value="Enviar" >
</form></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
...
o que posso fazer para solucionar?
Grato
Leonardo
Engraçado...Testei em 2 provedores, sendo 1 deles a Locaweb, mas o script não funcionou...Wilson