Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

MagnusIIIBR

PHPMailer no LocaWeb

Recommended Posts

Olá a todos,

mesmo seguindo os links de referencia da locaweb eu não consigo fazer meu smtp enviar os emails, quando ele executa a função ele dá o retorno que o email foi enviado, mas, nao recebo.

Já vi inumeros outras postagens aqui e na internet e nenhuma delas funcionou comigo.

 

#-----------------------------------------------------------------------------------------------------------------------#

[mail function]
; For Win32 only.
SMTP = localhost
smtp_port = 25

; For Win32 only.
;sendmail_from = me@example.com
  #  ENVIA EMAIL
  #-----------------------------------------------------------------------------------------------------------------------#
  function envia_email($destinatario, $assunto, $texto_mensagem, $nome_remetente, $email_remetente)
  {
    /* Medida preventiva para evitar que outros dom�nios sejam remetente da sua mensagem. */
    if (@eregi('tempsite.ws$|locaweb.com.br$|hospedagemdesites.ws$|websiteseguro.com$', $_SERVER[HTTP_HOST])) {
    
        //$emailsender='contato@gordeixos.com.br'; // Substitua essa linha pelo seu e-mail@seudominio
        $emailsender = $destinatario;
    } else {
    
        //$emailsender = "contato@" . $_SERVER[HTTP_HOST];
        $emailsender = $destinatario;
    
        //    Na linha acima estamos for�ando que o remetente seja 'webmaster@seudominio',
    
        // voc� pode alterar para que o remetente seja, por exemplo, 'contato@seudominio'.
    }
    
    
    
    //$emailsender= $email_remetente;
    $emailsender = "noreply@" . str_replace('www.', '', $_SERVER[HTTP_HOST]);
    
    
    /* Verifica qual � o sistema operacional do servidor para ajustar o cabe�alho de forma correta. N�o alterar */

    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");
    
    
    
    /* Montando o cabe�alho da mensagem */

    $headers = "MIME-Version: 1.1".$quebra_linha;
    
    #$headers .= "Content-type: text/html; charset=iso-8859-1".$quebra_linha;
    $headers .= "Content-type: text/html; charset=utf-8".$quebra_linha;
    
    // Perceba que a linha acima cont�m "text/html", sem essa linha, a mensagem n�o chegar� formatada.
    
    $headers .= "From: ".$emailsender.$quebra_linha;
    
    $headers .= "Cc: ".$comcopia.$quebra_linha;
    
    $headers .= "Bcc: ".$comcopiaoculta.$quebra_linha;
    
    $headers .= "Reply-To: ".$email_remetente.$quebra_linha;
    
    // Note que o e-mail do remetente ser� usado no campo Reply-To (Responder Para)
    
     
    
    /* Enviando a mensagem */
    
    //Verificando qual � o MTA que est� instalado no servidor e efetuamos o ajuste colocando o paramentro -r caso seja Postfix
    
    if(!mail($destinatario, $assunto, $texto_mensagem, $headers ,"-r".$email_remetente)){ // Se for Postfix
    
      $headers .= "Return-Path: " . $email_remetente . $quebra_linha; // Se "n�o for Postfix"
    
      mail($destinatario, $assunto, $texto_mensagem, $headers );
      
      return true;
    
    }
    else
    {
      Util::envia_email_2($destinatario, $assunto, $texto_mensagem, $nome_remetente, $email_remetente);
    }

  }
  
  #-----------------------------------------------------------------------------------------------------------------------#
  #  ENVIA EMAIL
  #-----------------------------------------------------------------------------------------------------------------------#
  function envia_email_2($destinatario, $assunto, $texto_mensagem, $nome_remetente, $email_remetente)
  {    
    // Inicia a classe PHPMailer
    $mail = new PHPMailer();
     
    // Define os dados do servidor e tipo de conex�o
    // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
     $mail->IsSMTP(); // Define que a mensagem ser� SMTP
     $mail->Host = 'smtp.xxxxxx.com.br'; // Endere�o do servidor SMTP (caso queira utilizar a autentica��o, utilize o host smtp.seudom�nio.com.br)
     $mail->Port = 587;
     $mail->SMTPAuth = true; // Usar autentica��o SMTP (obrigat�rio para smtp.seudom�nio.com.br)
     $mail->Username = 'xxxxxx.com.br'; // Usu�rio do servidor SMTP
     $mail->Password = 'xxxxxxx'; // Senha do servidor SMTP

    // Define o remetente
    // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
   # $mail->From = $destinatario; // Seu e-mail
    $mail->Sender = $destinatario; // Seu e-mail
    $mail->FromName = $nome_remetente; // Seu nome
    
     
    // Define os destinat�rio(s)
    // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
    $mail->AddAddress($destinatario, $assunto);
    //$mail->AddAddress('e-mail@destino2.com.br');
    //$mail->AddCC('ciclano@site.net', 'Ciclano'); // Copia
    //$mail->AddBCC('fulano@dominio.com.br', 'Fulano da Silva'); // C�pia Oculta
     
    // Define os dados t�cnicos da Mensagem
    // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
    $mail->IsHTML(true); // Define que o e-mail ser� enviado como HTML
    $mail->CharSet = 'UTF-8'; // Charset da mensagem (opcional)
     
    // Define a mensagem (Texto e Assunto)
    // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
    $mail->Subject  = $assunto; // Assunto da mensagem
    $mail->Body = $texto_mensagem;
    $mail->AltBody = $texto_mensagem;
     
    // Define os anexos (opcional)
    // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
    //$mail->AddAttachment("/home/login/documento.pdf", "novo_nome.pdf");  // Insere um anexo
     
    // Envia o e-mail
    $enviado = $mail->Send();
     
    // Limpa os destinat�rios e os anexos
    $mail->ClearAllRecipients();
    $mail->ClearAttachments();
     
    // Exibe uma mensagem de resultado
    if ($enviado) 
    {
      return true;
      //echo "E-mail enviado com sucesso!";
    } 
    else 
    {
      return false;  
      
      
      //return false;
      echo "N�o foi poss�vel enviar o e-mail.
       
      ";
      echo "Informa��es do erro: 
      " . $mail->ErrorInfo;
    }
    
    
  }

Compartilhar este post


Link para o post
Compartilhar em outros sites

Locaweb, de uns tempos para cá, mudou o tipo de e-mail e envia, para e-mails externos, somente e-mails autenticados. Logo a única função válida e necessária no seu código é envia_email_2.

 

Caso você esteja utilizando um host de e-mails próprio, deve verificar se está permitindo autenticação externa e também validar a porta, uma vez que a locaweb só permite autenticação através da porta 587, deve alterar a porta do seu servidor para escutar a 587.

 

Você também deve informar o tipo de conexão SMTP, que pode ser ssl, tls ou nenhum (PHPMailer::SMTPSecure).

 

Ative também o debug para verificar o que está acontecendo no seu código (PHPMailer::SMTPDebug)

 

0 - No output

1 - Commands
2 - Data and commands
3 - As 2 plus connection status
4 - Low-level data output

Use o 3 para ver detalhadamento o que está ocorrendo.

 

http://wiki.locaweb.com/pt-br/PHP_Mailer_-_Enviando_e-mail_autenticado_em_Plataforma_Windows

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.