Consegui mandar por e-mail o anexo (aueba!)
Só tem 2 poréns!
O script que estou usando é para mandar 4 anexos, que no final chega apenas 1 ao e-mail. Eu tirei a parte dos 3 anexo no php e html para enviar apenas 1, mas o php me informa que nao existe anexo para enviar =T
E depois de enviado, chega ao meu e-mail sem imagem, apenas com o X vermelho, e quando pelo a URL da imagem e colo no navegador eu baixo a imagem que anexei, mas por que ocorre isso?
Segue codigos
<form action="envia.php" method="post" enctype="multipart/form-data" name="email" id="email" onsubmit="return checa_formulario(this)"> <div align="left">Nome:<input name="nome" id="nome" size="25" type="text" /></div> <div align="left">Email:<input name="email_from" id="email_from" size="25" type="text" /></div> <div align="left"> <p><input name="arquivo" id="arquivo" size="40" type="file" /> <input name="arquivo" id="arquivo" size="40" type="file" /> <input name="arquivo" id="arquivo" size="40" type="file" /> <input name="arquivo" id="arquivo" size="40" type="file" /></p></div> <div align="left"> <p><textarea name="mensagem" cols="45" rows="5" id="mensagem"></textarea></p></div> <input name="enviar" id="enviar" value="Enviar" type="submit" /><input name="apagar" id="apagar" value="Apagar" type="reset" /> </form>
<? //pega os dados enviados pelo usuário $nome = $_POST["nome"]; $body = "Nome: $nome<br> Descrição: $mensagem"; $to = "[email="visual@visualsinalizacao.net"]visual@visualsinalizacao.net[/email]"; //Coloque aqui o seu email $from = $_POST["email_from"]; $subject = "teste de envio"; //Coloque aqui o assunto da mensagem enviada para o seu email $attach = $_FILES["arquivo"]["tmp_name"]; $attach_name = $_FILES["arquivo"]["name"]; $attach_size = $_FILES["arquivo"]["size"]; $attach_type = $_FILES["arquivo"]["type"]; $attach1 = $_FILES["arquivo"]["tmp_name"]; $attach_name1 = $_FILES["arquivo"]["name"]; $attach_size1 = $_FILES["arquivo"]["size"]; $attach_type1 = $_FILES["arquivo"]["type"]; $attach2 = $_FILES["arquivo"]["tmp_name"]; $attach_name2 = $_FILES["arquivo"]["name"]; $attach_size2 = $_FILES["arquivo"]["size"]; $attach_type2 = $_FILES["arquivo"]["type"]; $attach3 = $_FILES["arquivo"]["tmp_name"]; $attach_name3 = $_FILES["arquivo"]["name"]; $attach_size3 = $_FILES["arquivo"]["size"]; $attach_type3 = $_FILES["arquivo"]["type"]; //verifica se o email do remetente é válido if (!ereg("^([0-9,a-z,A-Z]+)([.,_]([0-9,a-z,A-Z]+))*[@]([0-9,a-z,A-Z]+)([.,_,-]([0-9,a-z,A-Z]+))*[.]([0-9,a-z,A-Z]){2}([0-9,a-z,A-Z])?$", $from)){ echo "<center>Erro: Digite um e-mail válido</center>"; exit; } //define os headers de envio $mailheaders = "From: \"$nome\" <$from>\r\n"; $mailheaders .= "Reply-To: $from\n"; //e define a mensagem tirando barras para evitar problemas no script $msg_body = stripslashes($body); //verifica se tem arquivo anexo, o if é se tiver e o else se não tiver anexo if ($attach !=null) { //abre o arquivo para codificá-lo no formato de email $file = fopen($attach, "r"); $contents = fread($file, $attach_size); $encoded_attach = chunk_split(base64_encode($contents)); fclose($file); //define os headers do anexo e da mensagem $mailheaders .= "MIME-version: 1.0\n"; $mailheaders .= "Content-type: multipart/mixed; "; $mailheaders .= "boundary=\"Message-Boundary\"\n"; $mailheaders .= "Content-transfer-encoding: 7BIT\n"; $mailheaders .= "X-attachments: $attach_name"; $body_top = "--Message-Boundary\n"; $body_top .= "Content-type: text/plain; charset=US-ASCII\n"; $body_top .= "Content-transfer-encoding: 7BIT\n"; $body_top .= "Content-description: Mail message body\n\n"; $msg_body = $body_top . $msg_body; $msg_body .= "\n\n--Message-Boundary\n"; $msg_body .= "Content-type: $attach_type; name=\"$attach_name\"\n"; $msg_body .= "Content-Transfer-Encoding: BASE64\n"; $msg_body .= "Content-disposition: attachment; filename=\"$attach_name\"\n\n"; $msg_body .= "$encoded_attach\n"; $msg_body .= "--Message-Boundary--\n"; //envia o email para as variáveis já definidas e tratadas e mostra mensagem de sucesso mail($to, stripslashes($subject), $msg_body, $mailheaders); echo"<center>Enviado com Sucesso!</center>"; } else{ //se não tiver anexo ele envia só a mensagem com esses headers echo "<center>Erro: Envio de ficheiro obrigatório!!!</center>"; exit; $headers = "MIME-Version: 1.0\r\n"; $headers .= "Content-type: text/html; charset=iso-8859-1\r\n"; $headers .= "From: \"$nome\" <$from>\r\n"; mail($to, stripslashes($subject), $msg_body, $mailheaders); echo"<center>Enviado com Sucesso!</center>"; } ?>
Alguém?