sacofrito 0 Denunciar post Postado Junho 12, 2012 Bom dia galera. Coloquei meu site no ar, porem preciso de algo para o usuario preencher um formulario e esta mensagem chegar em algum endereço de email a meu gosto. O uso da funçao nao é o problema, seus parametros sao simples. Porem achei varias coisas ensinando a configurar o ´php.ini mas nao estou conseguindo. Uso hospedagem basica da locaweb em linux. Alguem pode me ajudar com um passo a passo ? Agradeceria muito ! Compartilhar este post Link para o post Compartilhar em outros sites
Luiz Picolo 3 Denunciar post Postado Junho 12, 2012 Meu amigo bom dia. Aqui na empresa onde trabalho, entre vários servidores que temos, um é Locaweb e realmente não precisamos configurar nada para utilizar o email. Porém, nós nunca utilizamos a função mail e sim a classe Phpmailer que tem o mesmo objetivo mas com eficiência comprovadamente maior. Se sua função esta apresentando algum erro, poste o mesmo aqui para que possamos analisar. Grande Abraço. Compartilhar este post Link para o post Compartilhar em outros sites
sacofrito 0 Denunciar post Postado Junho 12, 2012 Caro colega. Tem como testar localmente esta funcao ? Estou utilizando o WampServer como servidor local. Em producao ainda nao testei. Vou postar minha rotina de envio de email. $msg = ""; if ($_POST['nome'] == ""){ $msg = "Preencha seu nome!<br>"; } if ($_POST['email'] == ""){ $msg .= "Preencha seu E-mail!<br>"; } if ($_POST['assunto'] == ""){ $msg .= "Preencha o assunto!<br>"; } if ($_POST['msg'] == ""){ $msg .= "Preencha a mensagem a ser enviada!"; } if ($msg != ""){ echo $msg; header("Refresh: 2, contato.php"); }else{ $nome = $_POST['nome']; $assunto = $_POST['assunto']; $msge = "Nome: " . $_POST['nome'] ."\n" . "E-mail : " . $_POST['email'] . "\n" . "Mensagem : " . $_POST['msg']; $email = $_POST['email']; mail("contato@fbgsystems.com","$assunto","$msge","From: $nome : $email \n\n"); echo "Mensagem enviada com sucesso!"; header("Refresh: 2, index.php"); } Coloquei no ar para testar. Segue oerro Warning: Cannot modify header information - headers already sent by (output started at /home/storage/4/ff/c3/fbgsystems/public_html/superior.php:54) in /home/storage/4/ff/c3/fbgsystems/public_html/enviarmsg.php on line 32 Linha em questao > header("Refresh: 2, index.php"); E o email nao foi enviado :( Compartilhar este post Link para o post Compartilhar em outros sites
Zezinho S/A LOCK 3 Denunciar post Postado Junho 12, 2012 Não sei se você sabe mas os e-mails estão sofrendo alterações de porta de saida de e-mail então se te ajuda segue o cod esse codigo foi disponibilizado na locaweb pois tive problemas no envio dos meus forms <?php if(PHP_OS == "Linux") $quebra_linha = "\n"; //Se for Linux elseif(PHP_OS == "WINNT") $quebra_linha = "\r\n"; // Se for Windows else die("Este script nao esta preparado para funcionar com o sistema operacional de seu servidor"); $emaildestinatario = ''; $assunto = 'Mensagem enviada via site'; $mensagemHTML = '<br>CPF: '.$cpf. '<br>Nome: '.$nome. '<br>E-mail: '.$email. '<br>Cidade: '.$cidade. '<br>Tel.: ('.$dddTelA.') '.$telA. '<br>Mensagem: '.$mensagemA.'<br>'; $headers = "MIME-Version: 1.1".$quebra_linha; $headers .= "Content-type: text/html; charset=iso-8859-1".$quebra_linha; $headers .= "From: ".$emailsender.$quebra_linha; $headers .= "Return-Path: " . $emailsender . $quebra_linha; //echo 'versão 1.1'; include ("smtp.class.php"); $host = "smtp.xxxxxx.com.br"; /*host do servidor SMTP */ $mail = "no_reply@xxxxxx.com.br";//o endereço de e-mail deve ser válido, do dominio. $senha = "xxxxxxxx";//senha do e-mail /* Configuração da classe.e smtp.class.php */ $smtp = new Smtp($host, 587); $smtp->user = $mail; /*usuario do servidor SMTP */ $smtp->pass = $senha; /* senha do usuario do servidor SMTP*/ $smtp->debug = true; /*ativa a autenticacao SMTP */ /* Prepara a mensagem para ser enviada. */ /*quem envia*/ $from = $mail; /*Para quem vai*/ $to = $emaildestinatario; /* faz o envio da mensagem */ $enviou = $smtp->Send($to, $from, $assunto, $mensagemHTML, "text/html"); ?> vou colocar em outro post a class do smtp <? class Smtp{ var $conn; var $user; var $pass; var $debug = true; /*Construtor da classe. Passe como parametro o host SMTP e a porta de conexao. */ function Smtp($host, $port){ $this->conn = fsockopen($host, $port, $errno, $errstr, 30); $this->Put("EHLO $host"); } /*Metodo para Autenticar Autentica no server, ja convertendo os dados em base64.*/ function Auth(){ $this->Put("AUTH LOGIN"); $this->Put(base64_encode($this->user)); $this->Put(base64_encode($this->pass)); } /*Metodo para enviar a msg. Parametros: 'DE:', 'PARA:', 'ASSUNTO','MENSAGEM' */ function Send($to, $from, $subject, $msg, $content_type = null){ $this->Auth(); $this->Put("MAIL FROM: " . $from); $this->Put("RCPT TO: " . $to); $this->Put("DATA"); if(isset($content_type)){ $this->Put($this->toHeader($to, $from, $subject, $content_type)); } else{ $this->Put($this->toHeader($to, $from, $subject)); } $this->Put("\n"); $this->Put($msg); $this->Put("."); $this->Close(); if(isset($this->conn)){ return true; }else{ return false; } } /*Metodo Put Passa valores para a conexao sock aberta no server.*/ function Put($value){ return fputs($this->conn, $value . "\n"); } /*Funcao toHeader Prepara e monta o cabecalho da mensagem. Aceita como parametro 'DE','PARA','ASSUNTO' e 'CONTENT-TYPE'. Metodo ja implementado na funcao Send.'*/ function toHeader($to, $from, $subject, $type = "text/plain"){ $header = "Message-Id: <". date('YmdHis').".". md5(microtime()).".". strtoupper($from) ."> \n"; $header .= "From: <" . $from . "> \n"; $header .= "To: <".$to."> \n"; $header .= "Subject: ".$subject." \n"; $header .= "Date: ". date('D, d M Y H:i:s O') ." \n"; $header .= "Content-Type: ". $type . "; charset=iso-8859-1 \n"; return $header; } /*Funcao Close Fechaa a conexao sock apos o envio ser concluido. Nao e necessario implementar, pois ja esta implementada na funcao Send*/ function Close(){ $this->Put("QUIT"); if($this->debug == true){ while (!feof ($this->conn)) { //echo 'Olha: -> '.fgets($this->conn) . "<br>\n"; fgets($this->conn); } } return fclose($this->conn); } } ?> Compartilhar este post Link para o post Compartilhar em outros sites
FernandoPhP 9 Denunciar post Postado Junho 12, 2012 Cara, você pode usar a classe PHPMailer, ela não exige essas configurações. Vou deixar aqui um hyperllink de um post que tem os arquivos para download. Só baixar e alterar as configurações. Link não autorizado removido[/url] Espero ter ajudado. Compartilhar este post Link para o post Compartilhar em outros sites
sacofrito 0 Denunciar post Postado Junho 12, 2012 Amigo, nao funcionou. Ele demora cerca de 1 minuto para carregar mas nao envia nada. Segue como configurei $nome = $_POST['nome']; $email = $_POST['email']; $msg = $_POST['msg']; $fone = $_POST['fone']; // aqui comeca rotina disponibilizada pelo locaweb $assunto = "Mensagem enviada pelo site."; $quebra_linha = "\n"; $mensagemHTML = '<br>Nome: '.$nome. '<br>E-mail: '.$email. '<br>Tel.: '.$fone. '<br>Mensagem: '.$msg.'<br>'; $headers = "MIME-Version: 1.1".$quebra_linha; $headers .= "Content-type: text/html; charset=iso-8859-1".$quebra_linha; $headers .= "From: ".$email.$quebra_linha; $headers .= "Return-Path: " . $emailsender . $quebra_linha; include ("smtp.class.php"); $host = "smtp.gmail.com"; /*host do servidor SMTP */ $mail = "meuemail@gmail.com";//o endereço de e-mail deve ser válido, do dominio. $senha = "XXXXXXXXXXXXXXXX";//senha do e-mail /* Configuração da classe.e smtp.class.php */ $smtp = new Smtp($host, 587); $smtp->user = $mail; /*usuario do servidor SMTP */ $smtp->pass = $senha; /* senha do usuario do servidor SMTP*/ $smtp->debug = true; /*ativa a autenticacao SMTP */ /* Prepara a mensagem para ser enviada. */ /*quem envia*/ $from = $email; /*Para quem vai*/ $to = "meuemail@gmail.com"; /* faz o envio da mensagem */ $enviou = $smtp->Send($to, $from, $assunto, $mensagemHTML, "text/html"); Compartilhar este post Link para o post Compartilhar em outros sites
Zezinho S/A LOCK 3 Denunciar post Postado Junho 12, 2012 smtp gmail ele não funciona, não sei pq, mas se você colocar o smtp de um site com dominio proprio ele funciona normalmente(pelo menos espero). pois ele fica alocado no seu servidor por exemplo smtp."meudominio".com.br emeus contato@meudominio.com.br e a senha é para ele funcionar estou utilizando o codigo em todos os sites que desenvolvo e está funcionando normalmente sendo que a maioria está nos servers da locaweb. vou ver até o que o outro codigo postado aqui para ver se é melhor. flw Compartilhar este post Link para o post Compartilhar em outros sites
sacofrito 0 Denunciar post Postado Junho 12, 2012 Obrigado Zezinho. Acabei de fazer funcionar utilizando um email do meu dominio. Agradeço a todos que tentaram ajudar ! Compartilhar este post Link para o post Compartilhar em outros sites