Sanozukez 0 Denunciar post Postado Julho 25, 2011 Formulario: <form action="" method="post" name="duvida" class="style20" id="duvida"> <p>Tem alguma pergunta?<br /> O time de lealdade ao cliente xxx está feliz em ajudar!<label></label></p> <table width="100%" border="0" align="center" cellpadding="0" cellspacing="0"> <tr> <td width="19%">Sua dúvida: </td> <td width="81%"><label> <input name="duvida" type="text" id="duvida" value="" size="70" align="middle" /> </label></td> </tr> <tr> <td> </td> <td><label></label></td> </tr> <tr> <td>Seu email: </td> <td><input name="email" type="text" id="email" size="50" /></td> </tr> <tr> <td> </td> <td><span class="style21" style="word-spacing: 0; margin: 0"> <input type="submit" name="Submit" value="enviar" /> </span></td> </tr> <tr> <td colspan="2">ou ligue para (xx) xxxx.xxxx </td> </tr> </table> </form> Segue o php que preciso corrigido; Observação: o PHP esta na mesma página do form... é só pra enviar a pergunta e o email do cara pro meu email e pronto. <? $emailEnviar = "teste@linksmonitorados.com.br"; $duvida = $_POST['duvida']; $email = $_POST['email']; if($_POST['enviar']){ mail("$emailEnviar"," Este email foi enviado de ClickFormulas_duvidas: email: $email duvida: $duvida "); } ?> Aguardo sugestões: Compartilhar este post Link para o post Compartilhar em outros sites
JCMais 75 Denunciar post Postado Julho 26, 2011 NUNCA confie nos dados que o usuário está enviando, sempre sanitize e valide os dados antes de fazer qualquer coisa com eles. Algumas funções que podem lhe servir: htmlscpecialchars filter-input trim Compartilhar este post Link para o post Compartilhar em outros sites
Beto A. 0 Denunciar post Postado Julho 26, 2011 Boa noite amigo, você precisa que o PHP receba os dados do formulário, e depois envie por email, certo? se for isso, eu acho que seria legal você deixar tudo dentro do IF, como o form tá na mesma página: <?php //Aqui verificamos se o formulário foi despachado: if($_SERVER['REQUEST_METHOD'] == "POST"){ $emailEnviar = "teste@linksmonitorados.com.br"; $titulo = 'Dúvida'; $duvida = $_POST['duvida']; $email = $_POST['email']; //Aqui usamos a função mail() para disparar o email mail($emailEnviar, $titulo, $duvida, 'De ' . $email); echo 'Este email foi enviado de ClickFormulas_duvidas:<br />'; echo 'email: ' . $email . '<br />'; echo 'duvida: ' . $duvida; } ?> Acho que assim deve funcionar a função mail deve ser usada da seguinte forma: mail($to, $subject, $text, 'From: ' . $from); Onde $to é quem vai receber a mensagem, $subject seria o titulo do email, $text a mensagem, e $from quem enviou (opcional). Você não precisa usar esses nomes, mas tem que manter essa ordem. Outra dica: evite usar as Short tags para abrir os scripts php, prefira sempre o <?php... a short tags podem dar problema se o servidor não estiver configurado pra receber elas. Qualquer dúvida, só falar abraço Compartilhar este post Link para o post Compartilhar em outros sites
Sanozukez 0 Denunciar post Postado Julho 26, 2011 Beto, obrigado pela atenção, fiz como você falou e deixei o código exatamente assim: <?php //Aqui verificamos se o formulário foi despachado: if($_SERVER['REQUEST_METHOD'] == "POST"){ $emailEnviar = "teste@linksmonitorados.com.br"; $titulo = 'Dúvida'; $duvida = $_POST['duvida']; $de = 'Clickformulas'; $email = $_POST['email']; //Aqui usamos a função mail() para disparar o email mail($emailEnviar, $titulo, $duvida, $de, $email); } ?> Mas não recebo nada ainda... eu não entendo direito ainda to começando no php, mas não tem nada errado com o submit do formulario? Compartilhar este post Link para o post Compartilhar em outros sites
Beto A. 0 Denunciar post Postado Julho 26, 2011 Tem parâmetros errados dentro desse seu mail hein Veja: mail($to, $subject, $text, 'From: ' . $from); Me diz, quem vai receber o email? o $emailEnviar ou o $email? suas variáveis estão confusas para mim. a variável $de, deve ser quem envia o email, para fazer isso é necessário colocar antes dentro de aspas simples o header responsável, no caso o 'From: ' no meu exemplo. tenta assim: mail($emailEnviar, $titulo, $text, 'De: ' . $email); Compartilhar este post Link para o post Compartilhar em outros sites
Sanozukez 0 Denunciar post Postado Julho 26, 2011 É, eu to meio perdido também, eu fui seguindo um tutorial aqui do forum em video, daí fico assim... no caso quem vai receber é o $emailEnviar e no form só tem os inputs "duvida" e "email". que o cara daí eu sei que e-mail enviou pra mim e respondo a duvida. Eu coloquei desse jeito que você disse por ultimo mas não foi. Obs. Ja estou testando online, to modificando e jogando no servidor da locaweb. Compartilhar este post Link para o post Compartilhar em outros sites
Beto A. 0 Denunciar post Postado Julho 26, 2011 Alguem me corrige ai se eu tiver errado, mas se não me engano na locaweb o esquema é diferente pra enviar. Esse jeito que passei para você é como faço, e funciona beleza. Da uma olhada nesses links do wiki da locaweb, pode ajudar: http://wiki.locaweb.com.br/pt-br/ERRO_451_funcao_mail%28%29_do_PHP http://wiki.locaweb.com.br/pt-br/Enviar_e-mails_pelo_PHP_usando_o_PHPMailer Abraço Compartilhar este post Link para o post Compartilhar em outros sites
Sanozukez 0 Denunciar post Postado Julho 26, 2011 Gente, me ajudem... Eu fiz outra alteração: <?php //Aqui verificamos se o formulário foi despachado: if($_SERVER['REQUEST_METHOD'] == "POST"){ $titulo = 'Dúvida Click Fórmulas'; $duvida = $_POST['duvida']; $email = $_POST['email']; //Aqui usamos a função mail() para disparar o email mail('teste@linksmonitorados.com.br', $titulo, $duvida, $email); } ?> Ainda não funciona, e creio que não seja problema com a locaweb, pois la tem um tutorial com a funcão mail() com as strings no mesmo padrão. Alguém tem uma luz? :( Compartilhar este post Link para o post Compartilhar em outros sites
Beto A. 0 Denunciar post Postado Julho 26, 2011 Opa velho Cara, ainda tá faltando o FROM tenta assim: mail('teste@linksmonitorados.com.br', $titulo, $duvida, 'From: ' . $email); E verifica se não tá caindo na lixeira do seu email, pode ser isso. Compartilhar este post Link para o post Compartilhar em outros sites
Sanozukez 0 Denunciar post Postado Julho 26, 2011 Então Beto, mas o FROM, não pode ser o valor que o usuário digitar no formulário no campo email? Daí o PHP pega esse campo e processa $email = $_POST['email']; e usa o que a pessoa digitar como from? A caixa de spam ta vazia. Meu Deus, porque num funciona isso.... =( Desculpa tomar seu tempo aí Beto, e obrigado. vou continuar tentando aqui. ;) Compartilhar este post Link para o post Compartilhar em outros sites
Beto A. 0 Denunciar post Postado Julho 26, 2011 Opa... eu quis dizer que você tem que enviar o header indicando a informação que você está passando nesse caso é o header from faz da forma que te falei: mail('teste@linksmonitorados.com.br', $titulo, $duvida, 'From: ' . $email); Se você reparar, coloquei 'From: ' . $email. eu to concatenando a variável $email (que foi a informação enviada pelo seu usuário) junto com o header. Da uma lida em como funciona a função mail, pelo manual do php: http://www.php.net/manual/pt_BR/function.mail.php Compartilhar este post Link para o post Compartilhar em outros sites
Sanozukez 0 Denunciar post Postado Julho 27, 2011 Veja só Beto. Esse código que peguei num tópido do iMasters mesmo funciona, do jeito que tá aí. Consegue ver uma luz comparando com o que estamos fazendo? Eu ia tentar tirar o anexo que não quero agora e deixar simples, mas daí tem muitos cabeçalhos que não sei onde posso mecher. <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> Ninguém mais pode me ajudar? Compartilhar este post Link para o post Compartilhar em outros sites
marcus_du 1 Denunciar post Postado Julho 27, 2011 Cara, você está tentando enviar este e-mail pela Locaweb? É você vai ter um bom trabalho, a locaweb é muito chata em relação a função mail(), é bem complicado enviar, mas não é impossível. Veja vem, você não pode enviar e-mail através do e-mail do usuário! Isso seria considerado uma "falsificação de identidade" ?! Entende? Envie de: contato@seudominio.com.br que é mais provável receber. E outra, o servidor que você está é linux ou windows? Tem que ver isso também viu!? Responda estas questões que creio poder tentar te ajudar! Compartilhar este post Link para o post Compartilhar em outros sites
Kakashi_Hatake 267 Denunciar post Postado Julho 27, 2011 Veja este post :seta: http://forum.imasters.com.br/topic/439276-envio-de-form-em-php/page__view__findpost__p__1735030 Compartilhar este post Link para o post Compartilhar em outros sites
Sanozukez 0 Denunciar post Postado Julho 28, 2011 Cara, você está tentando enviar este e-mail pela Locaweb? É você vai ter um bom trabalho, a locaweb é muito chata em relação a função mail(), é bem complicado enviar, mas não é impossível. Veja vem, você não pode enviar e-mail através do e-mail do usuário! Isso seria considerado uma "falsificação de identidade" ?! Entende? Envie de: contato@seudominio.com.br que é mais provável receber. E outra, o servidor que você está é linux ou windows? Tem que ver isso também viu!? Responda estas questões que creio poder tentar te ajudar! Na verdade eu quero enviar pra mim de mim mesmo, tipo eu não entendi direito ainda como funciona isso. Eu estava pensando que o php fazia envio por meio de alguma função (?)! Não sei mesmo. Tipo, no último exemplo que eu coloquei aí, que é de um form com anexo, ele ta funcionando aqui certinho. Nele tem o campo E-mail, onde o usuario digita o e-mail dele e chega pra mim, tipo eu entendo isso como: o usuario digita o e-mail como uma parte da mensagem que eu vou receber, mas não é do e-mail dele que vem a mensagem, ela só aparece escrito de: fuulano@algumacoisa.com.br porque ele digita o email dele no campo E-mail, ou seja, o PHP tem alguma função que envia mensagens do meu site pro meu email. Porque eu num to fazendo mailer tipo, autentica, senha, usuario e tal. Não, só quero receber a mensagem que tenha no corpo o email que o usuario digitar pra eu saber de quem é e a pergunta que vou responder a ele. Me desculpe a ignorancia mas, to camelando mesmo no PHP. Outra coisa, estou rodando em servidor Linux. Compartilhar este post Link para o post Compartilhar em outros sites