Andrey Knupp Vital 136 Denunciar post Postado Junho 26, 2011 Cara, coloca meu código, você não vai conseguir receber o anexo por esse código ai .. <?php $arquivo = $_FILES[ 'arquivo' ]; $type = $arquivo[ 'type' ]; /** * Teu Email */ $destinatario = 'teste@linksmonitorados.com.br'; /** * Assunto */ $assunto = 'Anexo de arquivos'; $filename = sprintf( '%s.%s', md5(uniqid().time().$_FILES[ 'name' ]), pathinfo( $arquivo[ 'name' ], PATHINFO_EXTENSION ) ); if( move_uploaded_file( $arquivo[ 'tmp_name' ], 'dir/'.$filename ) ){ $base64 = base64_encode( file_get_contents( 'dir/'.$filename ) ); $boundary = date("dmYhis"); $headers = implode ( "\n", Array( "MIME-Version: 1.0 ", "Content-Type: multipart/mixed; boundary=\"$boundary\" \r", "$boundary " ) ); $nome = $_POST[ "nome" ]; $sexo = $_POST[ "sexo" ]; $nascimento = $_POST[ "nascimento" ]; $email = $_POST[ "email" ]; $telefone = $_POST[ "telefone" ]; $conteudo = "--$boundary \n"; $conteudo .= "Content-Type: text/html; charset=\"iso-8859-1\" \n"; $conteudo .= "Content-Transfer-Encoding: 8bits \n\n"; $conteudo .= sprintf( "Nome: %s \n Sexo: %s \n Nascimento: %s \n Email: %s \n Telefone: %s \n", $nome, $sexo, $nascimento, $email, $telefone ); $conteudo .= "--$boundary \n"; $conteudo .= "Content-Type: $type; name=\"".$filename."\" \n"; $conteudo .= "Content-Transfer-Encoding: base64 \n"; $conteudo .= "Content-Disposition: attachment; filename=\"".$filename."\" \r\n" ; $conteudo .= "$base64 \n"; $conteudo .= "--$boundary \n"; unlink( 'dir/'.$filename ); if( mail( $destinatario, $assunto, $conteudo, $headers ) ){ echo 'Email Enviado com sucesso'; }else{ echo 'Falha no envio do email'; } } ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Click Fórmulas</title> </head> <body leftmargin="0" topmargin="0" marginwidth="0" marginheight="0" bgcolor="#FFFFFF"> <div id="apDiv2" style="display:none;"><img src="imagens/o_que_e_isso.png" /></div> <table width="100%" border="0" cellspacing="0" cellpadding="0"> <tr> <td height="600" align="center" valign="top"><table width="973" border="0" cellspacing="0" cellpadding="0"> <tr> <td width="35%" height="61"><table width="100%" border="0" cellspacing="0" cellpadding="0"> <tr> <td><a href="index.htm"><img src="imagens/logo_click.jpg" alt="" width="332" height="184" border="0" /></a></td> <td align="center"><div class="titulo">Seu Laboratório de Manipulação<br /> e Homeopatia na Internet</div> <font face="Arial, Helvetica, sans-serif" color="#039" size="3"><br /> <strong>Compre com segurança! Pague menos e receba em casa!</strong></font><br /></td> </tr> <tr> <td width="31%" height="20"> </td> <td width="69%" height="20" align="center"> </td> </tr> <tr> <td colspan="2" align="left"><table width="100%" border="0" cellspacing="10" cellpadding="10"> <tr> <td height="267" valign="top" bgcolor="#E3EFFD"><p class="texto211"><strong class="titulo1" style="color:#340C70; font-size: 20px;">Entre em Contato</strong></p> <hr color="#340C70" /> <p class="texto23" align="justify" style="color:#340C70">Seu email foi enviado com sucesso!<br /> <br /> Por favor, aguarde nosso retorno.</p> <p class="texto211" align="justify" style="color:#340C70"> </p></td> </tr> </table></td> </tr> <tr> <td> </td> <td align="center"> </td> </tr> <tr> <td> </td> <td align="center"> </td> </tr> </table> </td> </tr> <tr> <td align="left" valign="top"><? include('rodape.php'); ?></td> </tr> </table></td> </tr> </table> </body> </html> Compartilhar este post Link para o post Compartilhar em outros sites
Sanozukez 0 Denunciar post Postado Junho 26, 2011 :(Andrey, obrigado pela paciência. Então, eu coloquei seu código aqui. Mas agora o e-mail não chegou. Ele avisa que a mensagem foi enviada com sucesso mas o e-mail não vem. :( Compartilhar este post Link para o post Compartilhar em outros sites
Kakashi_Hatake 267 Denunciar post Postado Junho 26, 2011 Coloque esse código no lugar do trabalhe_resp.php <?php if( isset( $_POST[ 'Enviar' ] ) ) { $arquivo = $_FILES[ 'arquivo' ]; $filename = sprintf( '%s.%s', md5(uniqid().time().$_FILES[ 'name' ]), pathinfo( $arquivo[ 'name' ], PATHINFO_EXTENSION ) ); if( move_uploaded_file( $arquivo[ 'tmp_name' ], './'.$filename ) ) { $anexo = base64_encode( file_get_contents( './'.$filename ) ); $boundary = date("dmYhis"); $nome = $_POST[ "nome" ]; $sexo = $_POST[ "sexo" ]; $nascimento = $_POST[ "nascimento" ]; $email = $_POST[ "email" ]; $telefone = $_POST[ "telefone" ]; $destinatario = 'contato@clickformulas.com.br'; $assunto = 'Trabalhe Conosco'; $mensagem = sprintf( "Nome: %s \n Sexo: %s \n Nascimento: %s \n Email: %s \n Telefone: %s \n", $nome, $sexo, $nascimento, $email, $telefone ); $mensagem .= "--{$boundary}\n"; $mensagem .= "Content-Transfer-Encoding: 8bits\n"; $mensagem .= "Content-Type: text/html; charset=\"ISO-8859-1\"\n\n"; $mensagem .= "{$mensagem}\n"; $mensagem .= "--{$boundary}\n"; $mensagem .= "Content-Type: {$arquivo[ 'type' ]}\n"; $mensagem .= "Content-Disposition: attachment; filename=\"{$arquivo[ 'name' ]}\"\n"; $mensagem .= "Content-Transfer-Encoding: base64\n\n"; $mensagem .= "{$anexo}\n"; $mensagem .= "--{$boundary}--\r\n"; $headers = "MIME-Version: 1.0\n"; $headers .= "From: {$nome} <{$email}>\r\n"; $headers .= "Content-type: multipart/mixed; boundary=\"{$boundary}\"\r\n"; $headers .= "{$boundary}\n"; unlink( './'.$filename ); if( mail( $destinatario, $assunto, $mensagem, $headers ) ) { $result = 'Seu email foi enviado com sucesso! <br/> <br/> Por favor, aguarde nosso retorno.'; } else { $result = 'Falha no envio do email'; } } } ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Click Fórmulas</title> </head> <body leftmargin="0" topmargin="0" marginwidth="0" marginheight="0" bgcolor="#FFFFFF"> <div id="apDiv2" style="display:none;"><img src="imagens/o_que_e_isso.png" /></div> <table width="100%" border="0" cellspacing="0" cellpadding="0"> <tr> <td height="600" align="center" valign="top"><table width="973" border="0" cellspacing="0" cellpadding="0"> <tr> <td width="35%" height="61"><table width="100%" border="0" cellspacing="0" cellpadding="0"> <tr> <td><a href="index.htm"><img src="imagens/logo_click.jpg" alt="" width="332" height="184" border="0" /></a></td> <td align="center"><div class="titulo">Seu Laboratório de Manipulação<br /> e Homeopatia na Internet</div> <font face="Arial, Helvetica, sans-serif" color="#039" size="3"><br /> <strong>Compre com segurança! Pague menos e receba em casa!</strong></font><br /></td> </tr> <tr> <td width="31%" height="20"> </td> <td width="69%" height="20" align="center"> </td> </tr> <tr> <td colspan="2" align="left"><table width="100%" border="0" cellspacing="10" cellpadding="10"> <tr> <td height="267" valign="top" bgcolor="#E3EFFD"><p class="texto211"><strong class="titulo1" style="color:#340C70; font-size: 20px;">Entre em Contato</strong></p> <hr color="#340C70" /> <p class="texto23" align="justify" style="color:#340C70"><?php echo $result; ?></p><p class="texto211" align="justify" style="color:#340C70"> </p></td> </tr> </table></td> </tr> <tr> <td> </td> <td align="center"> </td> </tr> <tr> <td> </td> <td align="center"> </td> </tr> </table> </td> </tr> <tr> <td align="left" valign="top"><?php include('rodape.php'); ?></td> </tr> </table></td> </tr> </table> </body> </html> Testa e diga se funcionou. Compartilhar este post Link para o post Compartilhar em outros sites
Sanozukez 0 Denunciar post Postado Junho 26, 2011 Ola Carlos, coloquei seu código aqui e o email não veio também. Da mensagem de sucesso. Mas não chega nada. Esperei alguns minutos mas não entrou nada no outlook nem acessando pelo webmail. Não sei se faz diferença mas o servidor que uso é linux. Obrigado pelas ajudas gente. :clap: Mais alguma possibilidade? Compartilhar este post Link para o post Compartilhar em outros sites
Kakashi_Hatake 267 Denunciar post Postado Junho 26, 2011 Configure seu código para exibir TODAS as mensagens de erro, adicionando este código à primeira linha do script e teste novamente. <?php ini_set('display_errors', true); error_reporting(E_ALL); Meu servidor tbm é linux e está enviando email com anexo perfeitamente. :joia: Tá estranho isso aí :ermm: Compartilhar este post Link para o post Compartilhar em outros sites
Sanozukez 0 Denunciar post Postado Junho 26, 2011 Nossa, nem me fale, mas eu conto com vocês :lol: Recebi a mensagem de erro quando enviei: Notice: Undefined index: name in /home/storage/5/d5/e7/anuncer/public_html/clickformulas/clickformulas/trabalhe_resp.php on line 8 No meu dreamweaver a linha 8 é $filename = sprintf( '%s.%s', md5(uniqid().time().$_FILES[ 'name' ]), pathinfo( $arquivo[ 'name' ], PATHINFO_EXTENSION ) ); Que seria? abraços Compartilhar este post Link para o post Compartilhar em outros sites
Andrey Knupp Vital 136 Denunciar post Postado Junho 26, 2011 Cara, ai já não sei, é problema no teu código, testei na minha hospedagem, é não apresentou nenhum erro Compartilhar este post Link para o post Compartilhar em outros sites
Kakashi_Hatake 267 Denunciar post Postado Junho 26, 2011 Antes da linha 8 faça echo '<pre>'; var_dump( $_FILES ); exit; Poste o resultado. Compartilhar este post Link para o post Compartilhar em outros sites
Sanozukez 0 Denunciar post Postado Junho 26, 2011 Mas num tem como eu resolver isso, tipo, mesmo que eu modifique a página trabalhe_resp.php e deixe ela só pra fazer o serviço com o php e printar na tela sucesso ou falha? Tipo só pra funcionar mesmo. Sei lah gente, se quiserem que eu envie o arquivo pra vocês verem, mas o código que ta nos arquivos são os que passei mesmo exatamente do jeito que colei no forum, e agora do jeito que vocês disseram pra eu mudar. Outra coisa, ele deu undefined index. Esse index teria algo a ver com a minha pagina index? Porque essa página de contato esta dentro de duas pastas no diretorio de hospedagem que fiz pra ninguem acessar enquanto não estiver pronta, tipo, elas estão sem ligação com o index, sei lah, é só uma hipotese. Eu num entendo quase nada... :( Sei la, em ultimo caso se eu tivesse a pagina contato funcionando com os campos e o anexo, eu posso refaze-la denovo aqui, eu só queria que o script funcionasse, mas se vocês tão em dúvida, eu sozinho só faço isso no dia de são nunca. Carlos, segue o resultado: array(1) { ["arquivo"]=> array(5) { ["name"]=> string(18) "ALTERAÇÕE...docx" ["type"]=> string(71) "application/vnd.openxmlformats-officedocument.wordprocessingml.document" ["tmp_name"]=> string(43) "/home/storage/5/d5/e7/anuncer/tmp/phppFW1MI" ["error"]=> int(0) ["size"]=> int(14002) } } Compartilhar este post Link para o post Compartilhar em outros sites
Kakashi_Hatake 267 Denunciar post Postado Junho 27, 2011 O problema pode ser por causa da acentuação do arquivo. Remova o código de teste e coloque esse $arquivo[ 'name' ] = $filename = sprintf( 'curriculo_%s.%s', time( ), pathinfo( $_FILES[ 'arquivo' ] [ 'name' ], PATHINFO_EXTENSION ) ); No lugar deste $filename = sprintf( '%s.%s', md5(uniqid().time().$_FILES[ 'name' ]), pathinfo( $arquivo[ 'name' ], PATHINFO_EXTENSION ) ); Teste novamente. Compartilhar este post Link para o post Compartilhar em outros sites
Sanozukez 0 Denunciar post Postado Junho 27, 2011 Tentei mandar com anexo, deu falha no envio do email. Tentei mandar sem anexo apareceu escrito: Notice: Undefined variable: result in /home/storage/5/d5/e7/anuncer/public_html/clickformulas/clickformulas/trabalhe_resp.php on line 90 Só recapitulando, as primeiras linhas do código estão assim: (ainda com o código para mostrar os erros: <?php ini_set('display_errors', true); error_reporting(E_ALL); if( isset( $_POST[ 'Enviar' ] ) ) { $arquivo = $_FILES[ 'arquivo' ]; $arquivo[ 'name' ] = $filename = sprintf( 'curriculo_%s.%s', time( ), pathinfo( $_FILES[ 'arquivo' ] [ 'name' ], PATHINFO_EXTENSION ) ); if( move_uploaded_file( $arquivo[ 'tmp_name' ], './'.$filename ) ) { $anexo = base64_encode( file_get_contents( './'.$filename ) ); ...Desculpe a demora, fui comer algo, tem que come pra aguenta essa guerra contra esse php. Gente, tem um código aqui que funcionou. <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <title>formulario+ anexo</title> <style type="text/css"> <!-- .style2 { font-family: Arial, Helvetica, sans-serif; font-size: x-small; } .style3 {font-size: xx-small} --> </style> </head> <body> <form name="form1" method="post" enctype="multipart/form-data" action="<?= $_SERVER['PHP_SELF'];?>?act=enviar"> <p class="style2" style="word-spacing: 0; margin: 0">Nome</p> <p class="style2" style="word-spacing: 0; margin: 0"> <input type="text" name="nome"> </p> <p class="style2" style="word-spacing: 0; margin: 0">E-Mail</p> <p class="style2" style="word-spacing: 0; margin: 0"> <input name="de" type="text" id="de"> </p> <p class="style2" style="word-spacing: 0; margin: 0">Assunto</p> <p class="style2" style="word-spacing: 0; margin: 0"> <input type="text" name="assunto"> </p> <p class="style2" style="word-spacing: 0; margin: 0">Anexo</p> <p class="style2" style="word-spacing: 0; margin: 0"> <input type="file" name="anexo"> O arquivo deverá ter no máximo 3Mb. </p> <p class="style2" style="word-spacing: 0; margin: 0">Mensagem</p> <p class="style2" style="word-spacing: 0; margin: 0"> <textarea name="msg" cols="50" rows="10"></textarea> </p> <p class="style2" style="word-spacing: 0; margin: 0"></p> <input type="hidden" value="teste@linksmonitorados.com.br" name="email"> <p class="style2" style="word-spacing: 0; margin: 0"> <input type="submit" name="Submit" value="Enviar"> <input name="reset" type="reset" id="reset" value="Limpar"> </p> </form> <? if ($act == "enviar"){ $mime_list = array( "html"=>"text/html", "htm"=>"text/html", "txt"=>"text/plain", "rtf"=>"text/enriched", "csv"=>"text/tab-separated-values", "css"=>"text/css", "gif"=>"image/gif", "doc"=>"application/msword", "jpeg"=>"image/jpeg", "jpg"=>"image/jpeg", "jpe"=>"image/jpeg", "exe"=>"application/octet-stream", "mid"=>"audio/midi", "midi"=>"audio/midi", "mov"=>"video/quicktime", "movie"=>"video/x-sgi-movie", "mp3"=>"audio/mpeg", "mpeg"=>"video/mpeg", "mpg"=>"video/mpeg", "mpga"=>"video/mpeg", "png"=>"image/png", "pps"=>"application/mspowerpoint", "ppt"=>"application/mspowerpoint", "ppz"=>"application/mspowerpoint", "qt"=>"video/quicktime", "ra"=>"audio/x-realaudio", "rgb"=>"image/x-rgb", "tif"=>"image/tiff", "tiff"=>"image/tiff", "wav"=>"audio/x-wav", "swf"=>"application/x-shockwave-flash", "zip"=>"application/zip", ); $ABORT = FALSE; $boundary = "XYZ-" . date(dmyhms) . "-ZYX"; $message = "--$boundary\n"; $message .= "Content-Transfer-Encoding: 8bits\n"; $message .= "Content-Type: text/html; charset=\"ISO-8859-1\"\n\n"; $message .= "Enviado em ". date("d/m/Y"). "<P>Confira os dados:<P> Nome: " .$_POST['nome']. "<BR> Email: " .$_POST['de']. "<BR> Mensagem:<BR>" .nl2br($_POST['msg']). "<P>"; $message .= "\n"; $attachments[1] = $anexo; foreach ($attachments as $key => $full_path) { if ($full_path !='') { if (file_exists($full_path)){ if ($fp = fopen($full_path,"rb")) { if ((filesize($full_path)/1024) > "3000"){ echo "O arquivo que você tentou anexar, possui mais que 3MB. Por favor, tente um arquivo menor."; exit; } $filename = array_pop(explode(chr(92),$full_path)); $contents = fread($fp,filesize($full_path)); $encoded = base64_encode($contents); $encoded_split = chunk_split($encoded); fclose($fp); $message .= "--$boundary\n"; $message .= "Content-Type: $anexo_type\n"; $message .= "Content-Disposition: attachment; filename=\"$anexo_name\" \n"; $message .= "Content-Transfer-Encoding: base64\n\n"; $message .= "$encoded_split\n"; } else { echo "Impossível abrir o arquivo$key: $filename"; $ABORT = TRUE; } } else { echo "O arquivo$key não existe: $filename"; $ABORT = TRUE; } } } $message .= "--$boundary--\r\n"; $headers = "MIME-Version: 1.0\r\n"; $headers .= "From: <".$_POST['de'].">\r\n"; $headers .= "Content-type: multipart/mixed; boundary=\"$boundary\" charset=iso-8859-1\r\n"; $mensagem = mail($_POST['email'], $assunto, $message, $headers); if ($mensagem) { print "Mensagem enviada com sucesso!"; } else { print "O envio da mensagem falhou!"; } } ?> </body> </html> Só que eu gostei da página que vem depois do jeito que o Carlos fez, pra mostrar no meio da página sucesso ou falha com outro php. Como que eu faço pra essa página chamar outra assim que clicar em enviar avisando sucesso ou falha? Esse código aí funcionou, daí eu vo personalizar essa página com os itens da minha original, e quando sobrar um tempo tentar estudar elas. Obrigado a todos que ajudaram, mas ainda não consegui entender porque não funciona o script que estavamos fazendo, gostaria de não dar como resolvido ainda, veja o código dessa nova que funciona se aparece alguma luz do que pode estar errado no outro? Valeu gente :joia: Compartilhar este post Link para o post Compartilhar em outros sites
Sanozukez 0 Denunciar post Postado Julho 27, 2011 Já que ninguém colocou mais nada, podemos dar como resolvido, afinal está funcionando, só não consegui chamar uma página diferente com o echo dizendo que a mensagem foi enviada.. Compartilhar este post Link para o post Compartilhar em outros sites
marcus_du 1 Denunciar post Postado Julho 27, 2011 Tenta usar um header! Compartilhar este post Link para o post Compartilhar em outros sites