Rick RJ 1 Denunciar post Postado Dezembro 10, 2009 Galera, não consigo fazer com que chegue o email com o anexo. Por que? Cade o erro? Já mexi, remexi e até agora nada. tconosco.html <html> <head> <tr bgcolor="#ffffff"> <td colspan="6"><img src="images/mm_spacer.gif" alt="" width="1" height="1" border="0" /></td> </tr> <tr bgcolor="#ffffff"> <td colspan="2" valign="top" bgcolor="#a4c2c2"> </td> <td width="5" valign="top"> </td> <td width="5" valign="top"><br /> <br /> <table border="0" cellspacing="0" cellpadding="0" width="547"> <tr> <td width="547" class="pageName"> </td> </tr> <tr> <td class="bodyText"> <p align="justify" class="Estilo22"> </p> <p align="justify" class="Estilo22"> </p> <div align="justify" class="Estilo26"> </p> <p class="fieldwrap"> <label for="label"><span class="required"> *</span> Nome </label> <input name="fm_name2" type="text" class="fmtext" id="label" value="" size="40" /> </p> <p class="fieldwrap"> <label for="label2"><span class="required">*</span> Email </label> <input name="fm_email2" type="text" class="fmtext" id="label2" value="" size="40" /> </p> <p class="fieldwrap"> <label for="label3"><span class="required">*</span> Assunto</label> <input name="fm_subject2" type="text" class="fmtext" id="label3" value="" size="40" /> </p> <p class="fieldwrap"><span class="required">*</span> Mensagem <p class="fieldwrap"> <textarea class="fmtextarea" name="fm_message" cols="40" rows="4" id="fm_message"></textarea> <p class="fieldwrap"> <label for="label0">* Anexar Currículo</label> <script type="text/javascript" src="funcoes.js"></script> </head> <body> <form action="upload.php" method="post" enctype="multipart/form-data" id="form1"> <div id="conteudo"> <input name="fm_upload2" type="file" size="40" id="fm_upload2" /> <input type="button" value="Adicionar" onclick="Add()" /> <span id="campos"></span> <p align="center"> </p> <p align="center"> <input type="submit" name="Submit" value="Enviar" /> </p> </div></form> </p> <p class="fieldwrap"> <label for="label5"></label></p> <label for="label6"></label></td> </tr> <tr> <td height="214" align="center" valign="top"><br> <p> </td> </tr> </table> </td> <td width="6"> </td> <td width="49"> </td> </tr> <tr bgcolor="#ffffff"> <td colspan="6"><img src="images/mm_spacer.gif" alt="" width="1" height="1" border="0" /></td> </tr> <tr> <td width="6"> </td> <td width="216"> </td> <td width="54"> </td> <td width="551"><div align="center" class="Estilo1"></div></td> <td width="6"> </td> <td width="49"> </td> </tr> </table> <P ALIGN="CENTER"> <BGSOUND SRC="musica.mid"> </P> </body> </html> upload.php <?php $nome = $_POST['fm_name2']; $email = $_POST['fm_email2']; $assunto = $_POST['fm_subject2']; $mensagem = $_POST['fm_message']; $anexos = 0; $boundary = "XYZ-" . date("dmYis") . "-ZYX"; $mens = "--$boundary\n"; $mens .= "Content-Transfer-Encoding: 8bits\n"; $mens .= "Content-Type: text/html; charset=\"ISO-8859-1\"\n\n"; $mens .= "$mensagem\n"; $mens .= "--$boundary\n"; for($i = 0; $i < count($_FILES["file"]["name"]); $i++) { if(is_uploaded_file($_FILES["file"]["tmp_name"][$i])){ $fp = fopen($_FILES["file"]["tmp_name"][$i], "rb"); $anexo = chunk_split(base64_encode(fread($fp, $_FILES["file"]["size"][$i]))); $mens .= "Content-Type: ".$_FILES["file"]["type"][$i]."\n name=\"".$_FILES["file"]["name"][$i]."\"\n"; $mens .= "Content-Disposition: attachment; filename=\"".$_FILES["file"]["name"][$i]."\"\n"; $mens .= "Content-transfer-encoding:base64\n\n"; $mens .= $anexo."\n"; if($i + 1 == count($_FILES["file"]["name"])) $mens.= "--$boundary--"; else $mens.= "--$boundary\n"; if($_FILES["file"]['error'][$i] == 0) { $anexos++; } } } $headers = "MIME-Version: 1.0\n"; $headers .= "Date: ".date("D, d M Y H:i:s O")."\n"; $headers .= "From: \"Remetente\" <envio@monografiasrio.com.br>\r\n"; $headers .= "Content-type: multipart/mixed; boundary=\"$boundary\"\r\n"; if(mail($email, $assunto, $mens, $headers)){ echo "O email foi enviado com sucesso, $anexos anexos"; } else { echo "Nao foi possivel enviar o email"; } ?> funcoes.js NumeroCampo = 0;function Add() { if(NumeroCampo < 4) { NumeroCampo++; data = "<span id='campo"+NumeroCampo+"'><input type=\"file\" name=\"file[]\" /> <input type=\"button\" value=\"Remover\" onclick=\"Delcampo('campo"+NumeroCampo+"')\" /></span>"; campo = document.getElementById("campos"); campo.innerHTML = campo.innerHTML + data; } }function Delcampo(IDDiv) { var d = document.getElementById('campos'); var olddiv = document.getElementById(IDDiv); d.removeChild(olddiv); NumeroCampo--;} Alguem pode me dizer o que esta errado? Obrigado e fico a disposição para ajuda-los tambem. RJRick Compartilhar este post Link para o post Compartilhar em outros sites
Matias Rezende 50 Denunciar post Postado Dezembro 10, 2009 Olha, procura sobre envio com anexo com a classe PHPMailer que é bem mais fácil de enviar. Carlos Eduardo Compartilhar este post Link para o post Compartilhar em outros sites
Rick RJ 1 Denunciar post Postado Dezembro 11, 2009 Carlos, o meu já esta pronto, sei que tem um pequeno erro e não consigo descobrir. Pra que começar do zero de novo? Se alguem puder me ajudar agradeço, acho que quando tentamos muitas vezes seguidas encontrar um erro não conseguimos ver o erro. Outra pessoa olhando acha rápido. Valeu amigo e um abraço. RJRick Compartilhar este post Link para o post Compartilhar em outros sites
Matias Rezende 50 Denunciar post Postado Dezembro 11, 2009 Olhando por cima... // aqui você define a $anexo. OK. $anexo = chunk_split(base64_encode(fread($fp, $_FILES["file"]["size"][$i]))); $mens .= "Content-Type: ".$_FILES["file"]["type"][$i]."\n name=\"".$_FILES["file"]["name"][$i]."\"\n"; $mens .= "Content-Disposition: attachment; filename=\"".$_FILES["file"]["name"][$i]."\"\n"; $mens .= "Content-transfer-encoding:base64\n\n"; // aqui você adiciona ela à mensagem $mens .= $anexo."\n"; if($i + 1 == count($_FILES["file"]["name"])) $mens.= "--$boundary--"; else $mens.= "--$boundary\n"; if($_FILES["file"]['error'][$i] == 0) { // aqui você dá um ++ nela... será que aqui tá certo? $anexos++; Carlos Eduardo Compartilhar este post Link para o post Compartilhar em outros sites
Rick RJ 1 Denunciar post Postado Dezembro 12, 2009 Fiz as mudanças e não deu certo. Mesmo assim agradeço a ajuda. Mais alguma sugestão? Um abraço. RJRick. Compartilhar este post Link para o post Compartilhar em outros sites
Dee 0 Denunciar post Postado Dezembro 12, 2009 você viu de onde você está começando a Tag <form method='post' enctype='.......'> ?? você viu onde você colocou a TAG <body> ?? você viu onde colocou a TAG </HEAD> você abriu esta TAG <form> antes do input file. você tem que abrir a TAG <body> la em cima, nessa sequencia: <html> <head> <script type...></script> // seu script </head> <body> <form> . . . // seus campos . . . . . </form> </body> </html> Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Dezembro 13, 2009 Cara, eu fiz assim: else if ( $_POST['form']=='trabalhe' ) { $subject = 'Trabalhe Conosco do site '.$nome_site; $arquivo = isset($_FILES["cvitae"]) ? $_FILES["cvitae"] : FALSE; if(file_exists($arquivo["tmp_name"]) and !empty($arquivo)) { $fp = fopen($_FILES["cvitae"]["tmp_name"],"rb"); $anexo = fread($fp,filesize($_FILES["cvitae"]["tmp_name"])); $anexo = base64_encode($anexo); fclose($fp); $anexo = chunk_split($anexo); $boundary = "XYZ-" . date("dmYis") . "-ZYX"; $mens = "--alt-$boundary\n"; $mens .= "Content-Transfer-Encoding: 8bits\n"; $mens .= "Content-Type: text/html; charset=\"ISO-8859-1\"\n\n"; //plain $mens .= 'Nome: <strong>'.$_POST['nome'].'</strong>, <br />'. 'Email: <strong>'.$_POST['email'].'</strong>, <br />'."\n"; $mens .= "--alt-$boundary\n"; $mens .= "--$boundary\n"; $mens .= "Content-Type: ".$arquivo["type"]."\n"; $mens .= "Content-Disposition: attachment; filename=\"".$arquivo["name"]."\"\n"; $mens .= "Content-Transfer-Encoding: base64\n\n"; $mens .= "$anexo\n"; $mens .= "--$boundary--\r\n"; $anexo = true; } $message .= $mens; $pag = $_SERVER['HTTP_REFERER'].'&erro=0'; } E o envio: $headers = "MIME-Version: 1.0\n"; $headers .= "From: No-Reply<no-reply@{$nome_site}.com> \r\n"; $headers .= "Content-type: text/html; charset=iso-8859-1\n"; $headers .= "Bcc: rocha_bruno@hotmail.com \r\n"; if( $anexo ){ $headers .= "Content-type: multipart/alternative; boundary=\"$boundary\"\r\n"; $headers .= "$boundary\n"; } //echo $headers; exit(); if( mail($to, $subject, $message."\n\n".'aeeeee', $headers) ) header('Location: '.$pag );Está chegando corretamente o anexo aqui, porém não recebo o corpo da mensagem... oO Compartilhar este post Link para o post Compartilhar em outros sites
Dee 0 Denunciar post Postado Dezembro 13, 2009 troque isto $message .= $mens; por isto $message = $mens; // sem o ponto, a variavel $message está vazia. e isto $message."\n\n".'aeeeee', por isto $message."\n\n aeeeee", Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Dezembro 13, 2009 Não, não estava ^_^ e a concatenação não altera em nada. Já testei de outra forma tb. Apenas quis deixar um código que funciona o anexo.. porém não descobri o motivo do corpo não ser enviado, mesmo fazendo: mail($to, $subject, $mens, $headers); Compartilhar este post Link para o post Compartilhar em outros sites
Fabyo 66 Denunciar post Postado Dezembro 14, 2009 Carlos, o meu já esta pronto, sei que tem um pequeno erro e não consigo descobrir. Pra que começar do zero de novo? Se alguem puder me ajudar agradeço, acho que quando tentamos muitas vezes seguidas encontrar um erro não conseguimos ver o erro. Outra pessoa olhando acha rápido. Valeu amigo e um abraço. RJRick a classe PHPMailer é uma das melhores que existe para envio de email, e ela ja esta pronta e 100% funcional e pratica, isso não é começar do zero, é só pegar e usar e pronto. mas se esta afim de aprender e arrumar sua classe vai fundo, só fica ai a dica caso nao queria esquentar a cabeça e nem ter dor de cabeça com codigo Compartilhar este post Link para o post Compartilhar em outros sites
Rick RJ 1 Denunciar post Postado Dezembro 14, 2009 William Bruno e Dee, testei o código, o email chega sem anexo e com erro no corpo da mensagem. O que fazer? <?php $nome = $_POST['fm_name2']; $email = $_POST['fm_email2']; $assunto = $_POST['fm_subject2']; $mensagem = $_POST['fm_message']; $anexos = 0; $boundary = "XYZ-" . date("dmYis") . "-ZYX"; $mens = "--$boundary\n"; $mens .= "Content-Transfer-Encoding: 8bits\n"; $mens .= "Content-Type: text/html; charset=\"ISO-8859-1\"\n\n"; $mens .= "$mensagem\n"; $mens .= "--$boundary\n"; for($i = 0; $i < count($_FILES["file"]["name"]); $i++) { if(is_uploaded_file($_FILES["file"]["tmp_name"][$i])) $subject = 'Trabalhe Conosco do site '.$nome_site; $arquivo = isset($_FILES["cvitae"]) ? $_FILES["cvitae"] : FALSE; if(file_exists($arquivo["tmp_name"]) and !empty($arquivo)) { $fp = fopen($_FILES["cvitae"]["tmp_name"],"rb"); $anexo = fread($fp,filesize($_FILES["cvitae"]["tmp_name"])); $anexo = base64_encode($anexo); fclose($fp); $anexo = chunk_split($anexo); $mens = "--alt-$boundary\n"; $mens = "Content-Transfer-Encoding: 8bits\n"; $mens .= "Content-Type: text/html; charset=\"ISO-8859-1\"\n\n"; //plain $mens .= 'Nome: <strong>'.$_POST['nome'].'</strong>, <br />'. 'Email: <strong>'.$_POST['email'].'</strong>, <br />'."\n"; $mens .= "--alt-$boundary\n"; $mens .= "--$boundary\n"; $mens .= "Content-Type: ".$arquivo["type"]."\n"; $mens .= "Content-Disposition: attachment; filename=\"".$arquivo["name"]."\"\n"; $mens .= "Content-Transfer-Encoding: base64\n\n"; $mens .= "$anexo\n"; $mens .= "--$boundary--\r\n"; $anexo = true; } $message = $mens; // sem o ponto, a variavel $message está vazia. $pag = $_SERVER['HTTP_REFERER'].'&erro=0'; } $headers = "MIME-Version: 1.0\n"; $headers .= "From: No-Reply<no-reply@{$nome_site}.com> \r\n"; $headers .= "Content-type: text/html; charset=iso-8859-1\n"; $headers .= "Bcc: envio@monografiasrio.com.br \r\n"; if( $anexo ){ $headers .= "Content-type: multipart/alternative; boundary=\"$boundary\"\r\n"; $headers .= "$boundary\n"; } //echo $headers; exit(); if( mail($to, $subject, $message."\n\n aeeeee", $headers) ) header('Location: '.$pag ); ?> Um abraço e agradeço a ajuda. RJRick. Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Dezembro 14, 2009 Cara, que erro chegou pra você ? Eu gosto do forum, pois discutir ideias, e chegar num resultado eh legal. Por isso nao indico apenas classes prontas, e nem costumo mandar os membros "irem pesquisar". Vamos la.. você tem um input: cvitae ? <input type="file" name="cvitae" /> ?qndo der algum erro, nos informe qual. Alem disso, você declarou no teu form: <form action="" method="" enctype="multipart/form-data"> ? Compartilhar este post Link para o post Compartilhar em outros sites
Rick RJ 1 Denunciar post Postado Dezembro 16, 2009 William, declarei no formulário <form action="upload.php" method="post" enctype="multipart/form-data" id="form1"> <div id="conteudo"> <input name="fm_upload2" type="file" size="40" id="fm_upload2" /> <input type="button" value="Adicionar" onClick="Add()" /> <span id="campos"></span> <p align="center"> </p> <p align="center"> <input type="submit" name="Submit" value="Enviar" /> </p> </div></form> Não aparece nenhuma mensagem de erro, o email chega sem remetente, sem anexo e com mensagem sem nexo. Valeu a ajuda. Alguma sugestão? Quando colocar coloque o código completo para que eu possa entender. RJRick. Compartilhar este post Link para o post Compartilhar em outros sites
Matias Rezende 50 Denunciar post Postado Dezembro 18, 2009 Rick RJ, seu post foi excluído por ser considerado flood, o que vai contra as normas do fórum. Sobre a sua dúvida, mantenho a minha sugestão de utilizar PHPMailer. Não precisa mudar o formulário. É só modificar o arquivo que envia o e-mail. Carlos Eduardo Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Dezembro 18, 2009 Ow rapaz.. mas você tem que começar a tentar entender o script tb... se não fica dificil.. Teste assim: <?php if( $_SERVER['REQUEST_METHOD'] == 'POST' ) { $to = 'envio@monografiasrio.com.br';//email que irá receber $subject = 'Anexos enviados pelo site ';//assunto do email $arquivo = isset($_FILES['fm_upload2']) ? $_FILES['fm_upload2'] : FALSE;//aqui precisa bater com o name do teu input if(file_exists($arquivo['tmp_name']) and !empty($arquivo)) { $fp = fopen($_FILES['fm_upload2']['tmp_name'],"rb"); $anexo = fread($fp,filesize($_FILES['fm_upload2']['tmp_name'])); $anexo = base64_encode($anexo); fclose($fp); $anexo = chunk_split($anexo); $boundary = "XYZ-" . date("dmYis") . "-ZYX";//não remova essa linha, ela é importante ! /* trecho que enviaria uma mensagem no corpo da mensagem */ $mens = "--alt-$boundary\n"; $mens .= "Content-Transfer-Encoding: 8bits\n"; $mens .= "Content-Type: text/html; charset=\"ISO-8859-1\"\n\n"; //plain $mens .= 'Nome: '."\n"; $mens .= "--alt-$boundary\n"; /* fim do trecho do texto no corpo */ $mens .= "--$boundary\n"; $mens .= "Content-Type: ".$arquivo["type"]."\n"; $mens .= "Content-Disposition: attachment; filename=\"".$arquivo["name"]."\"\n"; $mens .= "Content-Transfer-Encoding: base64\n\n"; $mens .= "$anexo\n"; $mens .= "--$boundary--\r\n"; } $headers = "MIME-Version: 1.0\n"; $headers .= "From: No-Reply<no-reply@monografiasrio.com.br> \r\n";//quem envia $headers .= "Content-type: text/html; charset=iso-8859-1\n"; //$headers .= "Bcc: envio@monografiasrio.com.br \r\n";//somente se quiser receber uma cópia $headers .= "Content-type: multipart/alternative; boundary=\"$boundary\"\r\n"; $headers .= "$boundary\n"; mail($to, $subject, $mens, $headers); $msg = 'Formulário enviado!'; } if( !isset($msg) ) { ?> <form action="" method="post" enctype="multipart/form-data" id="form1"> <div id="conteudo"> <input name="fm_upload2" type="file" size="40" id="fm_upload2" /> <p align="center"></p> <p align="center"><input type="submit" name="Submit" value="Enviar" /></p> </div><!-- /conteudo --> </form> <?php } else echo $msg; ?> e depois implemente o envio de multiplos arquivos, que você tentou fazer.. Compartilhar este post Link para o post Compartilhar em outros sites
Rick RJ 1 Denunciar post Postado Dezembro 18, 2009 William, fiz as mudanças mas o email não chega. Já quebrei a cabeça e não consigo. Não dá mensagem de erro. Ricardo Compartilhar este post Link para o post Compartilhar em outros sites