rockman 2 0 Denunciar post Postado Maio 11, 2011 Olá pessoal! Estou quebrando a cabeça com um formulario usando a função "mail" do php bom vou tentar esclarecer ao maximo o que está acontecendo comigo! Os problemas são os seguintes: 1° Acontece que quando preencho os dados no formulário e recebo o email no meu gerenciador de emails (Mozilla Thunder Bird) no campo "De:" onde queria que aparecesse o email do usuário que preencheu o formulário e me enviou aparace a seguinte palavra "NOBODY" no campo Titulo tah tudo normal ou seja nada mais que o titulo do campo titulo do formulário! Olhem a imagem: Esta foto é do gerenciador do servidor web com o campo De como Nobody: 2° Apesar de eu ter declarado em headers o "MIME" e o "Content-type" o titulo "Ip usuário:" a exemplo aparece assim "IP do usuário" mas os dados prenchidos vem com a acentuação perfeita vejam a imagem abaixo!!!! OBS. Percebi que se eu colocar um "$headers" para em seguida formatar os dados de resposta para o usuario o campo que normalmente recebe a variavel "$site = "contato@site.com.br";" no gerenciador de email tambem fica "NOBODY"! e tambem fiz o teste mudando o charset para UTF 8 mas o problema persiste............!!!! Pois bem abaixo o codigo PHP da parte encarregada do envio dos dados para min e para o usuário! { //pega as variaveis por POST $nome = utf8_decode($_POST["campoNome"]); $email = utf8_decode($_POST["campoEmail"]); $fone = utf8_decode($_POST["campoFone"]); $assunto = utf8_decode($_POST["campoTitulo"]); $mensagem = utf8_decode($_POST["campoMensagem"]); //Variáveis para pegar dados do usuario $data = date("d/m/y"); //Pegar a data de envio do e-mail $ip = $_SERVER['REMOTE_ADDR']; //Pegar o ip do usuário $navegador = $_SERVER['HTTP_USER_AGENT']; //Pegar o navegador do visitante $hora = date("H:i"); //Pegar a hora com a função date //Cabeçalhos do e-mail $headers = "MIME-Version: 1.0\r\n"; $headers .= "Content-type: text/html; charset=iso-8859-1\r\n";/*para o envio com formatação HTML. Charset po ser utf-8 também*/ //Dados do sistema do usuário $conteudo = "<p><h3><i>Dados do usuário:</i></h3><p/><strong>Data de envio do email:</strong> $data<br />"; $conteudo .= "<strong>Hora de envio do email:</strong> $hora<br />"; $conteudo .= "<strong>Navegador do usuário:</strong> $navegador<br />"; $conteudo .= "<strong>IP do usuário:</strong> $ip<p>"; //Dados de envio do formulário $conteudo .= "<p><h3><i>Dados enviados via formulário:</i></h3><p/><strong>Nome:</strong> $nome<br />";/*vai para o seu email o que foi digitado no campo "nome"*/ $conteudo .= "<strong>Email:</strong> $email<br />";/*vai para o seu email o que foi digitado no campo "email"*/ $conteudo .= "<strong>Telefone:</strong> $fone<br />";/*vai para o seu email o que foi digitado no campo "fone"*/ $conteudo .= "<strong>Assunto:</strong> $assunto<br />";/*vai para o seu email o que foi digitado no campo "assunto"*/ $conteudo .= "<strong>Mensagem:</strong> $mensagem<br />";/*vai para o seu email o que foi digitado no campo "mensagem"*/ $email_site = "contato@site.com.br";/*email de destino (do site)*/ //Enviando o e-mail... mail("$email_site", "$assunto", "$conteudo", "$headers"); //Variáveis para pegar e enviar o e-mail para o visitante com os seguintes dados $site = "contato@site.com.br"; //o e-mail que aparecerá na caixa postal do visitante $titulo = "Contato Rockman 2"; //titulo da mensagem enviada para o visitante $msg = "$nome, Obrigado por entrar em contato conosco, em breve entraremos em contato"; //Envia o e-mail de auto-resposta para o visitante mail("$email","$titulo","$msg","From: $site"); Enfim preciso de um aajudinha pra resolver este probleminha pessoal se alguem tiver sugestões ou quiser melhorar este codigo eu agradeço de coração rsrsr.... Obrigado e fico no aguardo! Compartilhar este post Link para o post Compartilhar em outros sites
Paulo André 0 Denunciar post Postado Maio 11, 2011 Para a questão de exibir nobody no remetente, acrescente mais cabeçalhos assim: $headers .= "From: $nome <$email>\r\n"; E para os problemas de caracteres, provavelmente você terá que converter para UTF-8 também o conteúdo, por exemplo: mail($email_site, $assunto, utf8_encode($conteudo), $headers); []'s Compartilhar este post Link para o post Compartilhar em outros sites
rockman 2 0 Denunciar post Postado Maio 11, 2011 Para a questão de exibir nobody no remetente, acrescente mais cabeçalhos assim: $headers .= "From: $nome <$email>\r\n"; E para os problemas de caracteres, provavelmente você terá que converter para UTF-8 também o conteúdo, por exemplo: mail($email_site, $assunto, utf8_encode($conteudo), $headers); []'s Paulo Valew pela dica , depois de ler sua dica fiz o seguinte: Aqui retirei o uft_decode dos metodos $_POST: //pega as variaveis por POST $nome = $_POST["campoNome"]; $email = $_POST["campoEmail"]; $fone = $_POST["campoFone"]; $assunto = $_POST["campoTitulo"]; $mensagem = $_POST["campoMensagem"]; E tando no envio de mensagens para min quanto no email de auto resposta eu coloquei um utf_decode: //Enviando o e-mail com os dados pra min... mail($email_site,$assunto,utf8_decode($conteudo),$headers); Aqui é para o usuário: mail($email,$titulo,utf8_decode($msg),"From: $site"); Com isso o problema da acentuação se resolve! Porem ainda continuo com o problema do campo como remetente "nobody" e pior se eu acrecentar a linha $headers .= "From: $nome <$email>\r\n"; ou $headers .= "From:$email\r\n"; Ai nem recebo as informações do formulario e somente a confirmação vai para o usuário de que as informações chegaram até min!!! Estou quebrando a cabeça com um formulario heheheh.... Bom Paulo se você souber o que pode ser e tiver outra sugestão eu agradeço ou se os usuarios do forum tiverem sugestões tambem aceito! Obrigado! Compartilhar este post Link para o post Compartilhar em outros sites
Matheus Tavares 167 Denunciar post Postado Maio 12, 2011 mail($email,$titulo,utf8_decode($msg),"From: $site"); Usando dessa forma, você está desconsiderando o cabeçalho que estava sendo utilizado antes. Retirado do próprio manual do PHP: // To send HTML mail, the Content-type header must be set $headers = 'MIME-Version: 1.0' . "\r\n"; $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; // Additional headers $headers .= 'To: Mary <mary@example.com>, Kelly <kelly@example.com>' . "\r\n"; $headers .= 'From: Birthday Reminder <birthday@example.com>' . "\r\n"; $headers .= 'Cc: birthdayarchive@example.com' . "\r\n"; $headers .= 'Bcc: birthdaycheck@example.com' . "\r\n"; Se observarmos o primeiro comentário, veremos que não é possível enviar mensagens com a função mail sem definirmos um Content-Type no cabeçalho da mensagem. :seta: "To send HTML mail, the Content-type header must be set" Outra coisa importante: o remetente que você está definindo no cabeçalho em From "deve" ser um e-mail válido, interno do servidor (não precisa existir, somente ser válido). Exemplo: :seta: Domínio: teste.com.br :seta: E-mail válido: qualquer-coisa@teste.com.br Esse tópico pode ajudar: http://forum.imasters.com.br/topic/429394-form-de-contato-server-error-500/ []'s Compartilhar este post Link para o post Compartilhar em outros sites
rockman 2 0 Denunciar post Postado Maio 21, 2011 Olá pessoal! Depois de quebrar a cabeça com o php eu me rendi a classe phpmailer usei parte do codigo que estava utilizando juntamente como o phpmailer e resolvi o problema! Abaixo estou postando o codigo sem nada ada + acrecentado ou seja (perfumarias programativas que adicionei depois de testar ele como está)! Usei conecção SMTP ou seja atentar para as linhas "servidor SMTP" e Senha como tambem seu email o restante é só ligar as variaveis metoso $_POST com os campos do fotmularios EX "<p>Destinatário (Nome):<br><input type="text" name="nome" size="35"></p>" já no codigo do formulario $nomeusuario = $_POST['nome']; Obrigado a todos! <?php #Carregamos a biblioteca phpmailer require("class.phpmailer.php"); #resgatando os dados passados pelo form $nomeusuario = $_POST['nome']; $emailusuario = $_POST['email']; $foneusuario = $_POST['fone']; $assunto = $_POST['assunto']; $mensagem = $_POST['msg']; #Variáveis para pegar dados do usuario $data = date("d/m/y"); //Pegar a data de envio do e-mail $ip = $_SERVER['REMOTE_ADDR']; //Pegar o ip do usuário $navegador = $_SERVER['HTTP_USER_AGENT']; //Pegar o navegador do visitante $hora = date("H:i"); //Pegar a hora com a função date #Dados do sistema do usuário $conteudoDados = "<p><h3><i>Dados do usuário:</i></h3><p/>"; $conteudoDados .= "<strong>Data de envio do email:</strong> $data<br />"; $conteudoDados .= "<strong>Hora de envio do email:</strong> $hora<br />"; $conteudoDados .= "<strong>Navegador do usuário:</strong> $navegador<br />"; $conteudoDados .= "<strong>IP do usuário:</strong> $ip<p>"; #Dados de envio do formulário $conteudoMsg = "<p><h3><i>Dados enviados via formulário:</i></h3><p/>"; $conteudoMsg .= "<strong>Nome:</strong> $nome<br />"; $conteudoMsg .= "<strong>Email:</strong> $email<br />"; $conteudoMsg .= "<strong>Telefone:</strong> $fone<br />"; $conteudoMsg .= "<strong>Assunto:</strong> $assunto<br />"; $conteudoMsg .= "<strong>Mensagem:<p></strong> $mensagem<br />"; #Instanciamos a classe $mail = new PHPMailer(); #na classe, há a opção de idioma, setei como br $mail->SetLanguage("br"); #Definimos o envio via SMTP $mail->IsSMTP(); # Ativa o envio de e-mails em HTML $mail->IsHTML(true); # Codificação $mail->CharSet = 'utf-8'; // Charset da mensagem (opcional) # Quebra de linha $mail->WordWrap = 50; // Definição de quebra de linha #Configuramos a conexão ao SMTP $mail->Host = "**************"; // Endereço do servidor SMTP $mail->SMTPAuth = false; // Autenticação se necessario!!! #Configuramos o login e senha de conexão a conta SMTP $mail->Username = "seu_email.com.br"; // Usuário do servidor SMTP $mail->Password = "**********"; // Senha do servidor SMTP #Definimos o remetente $mail->From = "$emailusuario"; // Variavel do metodo post que pega o email do formulário #Definimos o nome do remetente $mail->FromName = "$nomeusuario"; // Variavel do metodo post que pega o nome do formulário #Definimos o destinatário $mail->AddAddress("contato@sei_la.com.br"); // Destino da mensagem //$mail->AddCC('ciclano@site.net', 'Ciclano'); // Com Copia //$mail->AddBCC('fulano@dominio.com.br', 'Fulano da Silva'); // Cópia Oculta #Endereço de resposta (reply = replica). $mail->AddReplyTo("$emailusuario","Contato "); // Email e titulo que irá aparecer para o min! #Definimos o assunto do e-mail $mail->Subject = "$assunto";// Variavel do metodo post que pega o assunto do email recebido #Definimos a mensagem do e-mail $mail->Body = "$conteudoDados"; $mail->Body .= "$conteudoMsg"; #Se a mensagem for enviada mostra mensagem de "sucesso" senão "erro"... if(!$mail->Send()) { echo "Erro: " . $mail->ErrorInfo; } else { echo "E-mail enviado!"; #Variáveis para pegar e enviar o e-mail para o visitante com os seguintes dados $site = "seu_email.com.br"; //o e-mail que aparecerá na caixa postal do visitante $assunto = 'Auto Confirmação Contato'; $mensagem = '<strong>obrigado por entrar em contato conosco em breve faremos contato com você</strong>'; $header = "MIME-Version: 1.0\n"; $header .= "Content-type: text/html; charset=iso-8859-1\n"; $header .= "From: $site"; mail($emailusuario, $assunto, utf8_decode($mensagem), $header); } #Limpa os destinatários $mail->ClearAllRecipients(); ?> Compartilhar este post Link para o post Compartilhar em outros sites