Inscrições abertas para nosso Webinar anual Adianti Framework 2024!
Clique aqui para saber mais
Erro ao enviar o Email Ja faz alguns dias que estou tendo um problema, a qual estive pesquisando e eh muito comum, o estranho que ninguém apresenta uma solução definitiva para o assunto. Ocorre que ao tentar enviar um Email que não esta no meu DOMÍNIO, o mesmo e recusado pelo Recebedor. não importando o Domino. Ou seja, se eu tentar mandar um email do IG para o IG funciona, do Gmail para o Gmail funciona, n...
MC
Erro ao enviar o Email  
Fechado
Ja faz alguns dias que estou tendo um problema, a qual estive pesquisando e eh muito comum, o estranho que ninguém apresenta uma solução definitiva para o assunto.

Ocorre que ao tentar enviar um Email que não esta no meu DOMÍNIO, o mesmo e recusado pelo Recebedor. não importando o Domino.

Ou seja, se eu tentar mandar um email do IG para o IG funciona, do Gmail para o Gmail funciona, no entanto se quiser mandar um email do Gmail para o IG da a seguinte
erro


SMTP Error: The following recipients failed: xxxxxxx@gmail.com: : Recipient address rejected: Access Denied xxxxxx@spaziosanmarco.com.br: : Recipient address rejected: Access Denied



Trata- se de um formulário de Reclamação:

  1. <?php
  2.     public function onEmail$param )
  3.     {
  4.         try
  5.         {
  6.             $body .= "Reclamação / Mensagem <br>";
  7.             $body .= "======================<br><br>";         
  8.             $body .= "-------------------------------------------------------------------------<br>";
  9.             $body .= "Este email foi enviado via formulário de Reclamação<br>";
  10.     
  11.             TTransaction::open('BcoDados');
  12.         
  13.             $object TblContaEmail::find(1);
  14.            
  15.             $mail = new TMail();
  16.             $mail->setFrom$param['OCO_EMAIL'], $param['OCO_NOME'] );     // Email e Nome de quem esta enviando
  17.             $mail->addAddress$param['OCO_EMAIL'] );                                     // Email do Recebedor (Copia) 
  18.             $mail->addBCC$object->CTM_USUARIO );                                       // Copia Oculta Destino
  19.             $mail->setSubject'RECLAMAÇÃO - '.$param['OCO_ASSUNTO'] );   // SubJect (Assunto)
  20.             $mail->setHtmlBody$body );     //'html body'                                       
  21.     
  22.             $mail->SetUseSmtp();
  23.             $mail->SetSmtpHost$object->CTM_HOST$object->CTM_PORTA$object->CTM_SECURE );     // SMTP / Porta / Segurança
  24.             $mail->SetSmtpUser$object->CTM_USUARIO$object->CTM_SENHA );                                       // Usuario e Senha
  25. //            $mail->setReplyTo( $object->CTM_USUARIO );         
  26.             $mail->send();  
  27.         }
  28.         catch (Exception $e// in case of exception
  29.         {
  30.             new TMessage('error'$e->getMessage()); 
  31.         }
  32.     }
  33. ?>



Já fiz todos os testes possíveis, (SMTP / Porta / Segurança) e ai vai

Se alguém puder ajudar agradeço...

Pacotão Dominando o Adianti Framework 7
O material mais completo de treinamento do Framework.
Curso em vídeo aulas + Livro completo + Códigos fontes do projeto ERPHouse.
Conteúdo Atualizado! Versão 7.4


Dominando o Adianti 7 Quero me inscrever agora!

Comentários (4)


MC

Problema resolvido, simples porem ridículo.

O caso é que os Host de email atualizaram o sistema de Anti-Spam e com isso a maioria das mensagens estão sendo bloqueadas ou não enviadas

A solucao, bem ai e simples porem trabalhoso, vc tem que dizer ao email o que pode ou nao ir ou receber

Segue link para detalhes

wiki.locaweb.com.br/pt-br/Lista_de_Bloqueio_-_Webmail

www.lccomunic.com.br/noticia/205/e-mails-de-contatos-indo-para-o-spa


Abraços


JD

Outra solução simples é:

Adicione o codigo:
  1. <?php
  2. $this->pm->SMTPOptions = array(
  3.             'ssl' => array(
  4.                 'verify_peer' => false,
  5.                 'verify_peer_name' => false,
  6.                 'allow_self_signed' => true
  7.             )
  8.         );
  9. ?>

Abaixo de:
  1. <?php
  2. $this->pm-> SMTPSecure "ssl";
  3. ?>

Na classe TMail, a classe pode ser encontrada na pasta "app/lib/util/".
O codigo inteiro ficara assim:

  1. <?php
  2. /**
  3.  * Facade for phpMailer
  4.  * @author  Pablo Dall'Oglio
  5.  * @version 2.0, 2007-08-01
  6.  * Copyright (c) 2006-2007 Pablo Dall'Oglio
  7.  * <pablo@adianti.com.br>. All rights reserved.
  8.  */
  9. class TMail
  10. {
  11.     private $pm// phpMailer instance
  12.     
  13.     /**
  14.      * Class Constructor
  15.      */
  16.     function __construct()
  17.     {
  18.         $this->pm = new PHPMailer(true);
  19.         $this->pm-> CharSet 'utf-8';
  20.     }
  21.     
  22.     /**
  23.      * Turn ON/OFF the debug
  24.      */
  25.     function setDebug($bool)
  26.     {
  27.         $this->pm-> SMTPDebug    $bool;
  28.     }
  29.     
  30.     /**
  31.      * Set from email address
  32.      * @param  $from = from email
  33.      * @param  $name = from name
  34.      */
  35.     function setFrom($from$name)
  36.     {
  37.         $this->pm-> From     $from;
  38.         $this->pm-> FromName $name;
  39.     }
  40.     
  41.     /**
  42.      * Set reply-to email address
  43.      * @param  $email = reply-to email
  44.      * @param  $name  = reply-to name
  45.      */
  46.     function setReplyTo($address$name '')
  47.     {
  48.         $this->pm-> AddReplyTo($address$name '');
  49.     }
  50.     
  51.     /**
  52.      * Set the message subject
  53.      * @param  $subject of the message
  54.      */
  55.     function setSubject($subject)
  56.     {
  57.         $this->pm-> Subject $subject;
  58.     }
  59.     
  60.     /**
  61.      * Set the email text body
  62.      * @param  $body = text body
  63.      */
  64.     function setTextBody($body)
  65.     {
  66.         $this->pm-> Body $body;
  67.         $this->pm-> IsHTML(false);
  68.     }
  69.     
  70.     /**
  71.      * Set the email html body
  72.      * @param  $body = html body
  73.      */
  74.     function setHtmlBody($html)
  75.     {
  76.         $this->pm-> MsgHTML($html);
  77.     }
  78.     
  79.     /**
  80.      * Add an TO address
  81.      * @param  $address = TO email address
  82.      * @param  $name    = TO email name
  83.      */
  84.     public function addAddress($address$name '')
  85.     {
  86.         if (!$name)
  87.         {
  88.             // search by pattern: nome <email@mail.com>
  89.             list($address$name) = $this->parseMail($address);
  90.         }
  91.         
  92.         $this->pm-> AddAddress($address$name);
  93.     }
  94.     
  95.     /**
  96.      * Add an CC address
  97.      * @param  $address = CC email address
  98.      * @param  $name    = CC email name
  99.      */
  100.     public function addCC($address$name '')
  101.     {
  102.         $this->pm-> AddCC($address$name);
  103.     }
  104.     
  105.     /**
  106.      * Add an BCC address
  107.      * @param  $address = BCC email address
  108.      * @param  $name    = BCC email name
  109.      */
  110.     public function addBCC($address$name '')
  111.     {
  112.         $this->pm-> AddBCC($address$name);
  113.     }
  114.     
  115.     /**
  116.      * Add an attachment
  117.      * @param  $path = path to file
  118.      * @param  $name = name of file
  119.      */
  120.     public function addAttach($path$name '')
  121.     {
  122.         $this->pm-> AddAttachment($path$name);
  123.     }
  124.     
  125.     /**
  126.      * Set to use Smtp
  127.      */
  128.     public function SetUseSmtp($auth true)
  129.     {
  130.         $this->pm-> IsSMTP();            // set mailer to use SMTP
  131.         $this->pm-> SMTPAuth $auth;    // turn on SMTP authentication
  132.     }
  133.     
  134.     /**
  135.      * Set Smtp Host
  136.      * @param  $host = smtp host
  137.      */
  138.     public function SetSmtpHost($host$port 25)
  139.     {
  140.         $this->pm-> Host $host;
  141.         $this->pm-> Port $port;
  142.         
  143.         
  144.         $this->pm-> SMTPSecure "ssl";
  145.         $this->pm->SMTPOptions = array(
  146.             'ssl' => array(
  147.                 'verify_peer' => false,
  148.                 'verify_peer_name' => false,
  149.                 'allow_self_signed' => true
  150.                 )
  151.             );
  152.         
  153.     }
  154.     
  155.     /**
  156.      * Set Smtp User
  157.      * @param  $user = smtp user
  158.      * @param  $pass = smtp pass
  159.      */
  160.     public function SetSmtpUser($user$pass)
  161.     {
  162.         $this->pm-> Username $user;
  163.         $this->pm-> Password $pass;
  164.     }
  165.     
  166.     /**
  167.      * Returns name and email separated
  168.      */
  169.     public function parseMail($fullmail)
  170.     {
  171.         $pos strpos($fullmail'<');
  172.         if ( $pos !== FALSE )
  173.         {
  174.             $name  trim(substr($fullmail0$pos-1));
  175.             $email trim(substr($fullmail$pos+1, -1));
  176.             $name  str_replace("'""''"$name);
  177.             
  178.             return array($email$name);
  179.         }
  180.         
  181.         return array($fullmail'');
  182.     }
  183.     
  184.     /**
  185.      * Send the email
  186.      */
  187.     public function send()
  188.     {
  189.         $this->pm-> Send();
  190.         return TRUE;
  191.     }
  192. }
  193. ?>

MC

Ótimo, valeu pela solução

Abraços
PD

Na próxima solução, isto virá por default na PHPMailer:

  1. <?php
  2.     public $SMTPOptions = array(
  3.         'ssl' => array(
  4.             'verify_peer' => false,
  5.             'verify_peer_name' => false,
  6.             'allow_self_signed' => true
  7.         )
  8.     );
  9. ?>