1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Php email - estranho

Discussão em 'Web Development' iniciada por Guimaraez, 29 de Junho de 2008. (Respostas: 6; Visualizações: 767)

  1. Guimaraez

    Guimaraez Power Member

    Boas,
    Tenho um site em php, onde ta incluida uma funçao mail em php em que acontece uma cena estranha acho eu.
    Depois da pessoa preencher o formulario de email etc e enviar e mostrada a mensagem de sucesso. Ate aqui tudo bem.

    Se tiver o codigo assim da na perfeiçao, mas juntamente da mensagem de sucesso aparece-me o relatorio de envio do servidor smtp.

    PHP:
    include ("smtp.class.php");

    $from $_POST['email'];
    $subject $_POST['assunto'];
    $msg $_POST['mensagem'];
    $to "[email protected]";



    $smtp = new Smtp("smtp.telepac.pt");
    $smtp->user "[email protected]";
    $smtp->pass "******";
    $smtp->debug true;

    if(
    $smtp->Send($to$from$subject$msg)){
    echo 
    "<font color='FFFFFF'>O seu email foi enviado com sucesso. Aguarde a nossa resposta. Obrigado</font>";
    }else{
    echo 
    "falha ao enviar;_;";
    }
    Mas se eu quiser ocultar o dito relatorio, fazendo isto:

    PHP:
    $smtp->debug false;
    os mails ja nao chegam a minha caixa...

    Help me :confused:
     
  2. Guimaraez

    Guimaraez Power Member

    Quando puderem, dêem um jeitinho nisto, a minha PAT (prova de apetidao tecnologica) é ja nesta terça feira :wow:8|
    Obrigado
     
  3. Kayvlim

    Kayvlim Undefined Moderator
    Staff Member

    Eu não sei como é que isso está a trabalhar "por trás", por isso posso-te só pedir para ver o conteúdo do smtp.class.php?
     
  4. Guimaraez

    Guimaraez Power Member

    smtp.class.php ->

    PHP:
    class Smtp{

    var 
    $conn;
    var 
    $user;
    var 
    $pass;
    var 
    $debug true;

    function 
    Smtp($host){
      
    $this->conn fsockopen($host25$errno$errstr30);
      
    $this->Put("EHLO $host");
    }
    function 
    Auth(){
      
    $this->Put("AUTH LOGIN");
      
    $this->Put(base64_encode($this->user));
      
    $this->Put(base64_encode($this->pass));
    }
    function 
    Send($to$from$subject$msg$ad=''){

    $this->Auth();
    $this->Put("MAIL FROM: " $from);
    $this->Put("RCPT TO: " $to);
    $this->Put("DATA");
    $this->Put($this->toHeader($to$from$subject$ad));
    $this->Put("\r\n");
    $this->Put($msg);
    $this->Put(".");
    $this->Close();
    if(isset(
    $this->conn)){
    return 
    true;
    }else{
    return 
    false;
    }
    }
    function 
    Put($value){
      return 
    fputs($this->conn$value "\r\n");
    }
    function 
    toHeader($to$from$subject$ad=''){
    $header "Message-Id: <"date('YmdHis')."."md5(microtime())."."strtoupper($from) ."> \r\n";
    $header .= "From: <" $from "> \r\n";
    $header .= "To: <".$to."> \r\n";
    $header .= "Subject: ".$subject." \r\n";
    $header .= "Date: "date('D, d M Y H:i:s O') ." \r\n";
    $header .= "X-MSMail-Priority: High \r\n";
    $header .= $ad;
    return 
    $header;
    }
    function 
    Close(){
      
    $this->Put("QUIT");
      if(
    $this->debug == true){
      while (!
    feof ($this->conn)) {
        echo 
    fgets($this->conn) . "<br>\n";
      }
      }
      return 
    fclose($this->conn);
    }
    }
     
  5. m.costa

    m.costa Power Member

    Não sei ao certo como funcionam os servidores de SMTP, mas pelo código que mostraste a unica diferença entre o debug ser true ou false e' na função Close(), que apenas no caso de ser true lê o conteudo do stream; se for false não lê nada e fecha logo a ligação. Talvez o servidor precise que o cliente leia tudo para o mail ser enviado com sucesso ?

    De qualquer maneira, tenta alterar a função Close() da classe para isto:

    PHP:
    function Close(){
      
    $this->Put("QUIT");

      
    $resposta '';
      while (!
    feof ($this->conn))
        
    $resposta .= fgets($this->conn) . "<br>\n";

      if(
    $this->debug == true)
        echo 
    $resposta;

      return 
    fclose($this->conn);
    }
     
  6. Guimaraez

    Guimaraez Power Member

    Ja daaaaaaaaaaaaaaaaaa lol obrigado a todos, especialmente m.costa.
     

Partilhar esta Página