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. TTransaction::open('BcoDados');
  11. $object = TblContaEmail::find(1);
  12. $mail = new TMail();
  13. $mail->setFrom( $param['OCO_EMAIL'], $param['OCO_NOME'] ); // Email e Nome de quem esta enviando
  14. $mail->addAddress( $param['OCO_EMAIL'] ); // Email do Recebedor (Copia)
  15. $mail->addBCC( $object->CTM_USUARIO ); // Copia Oculta Destino
  16. $mail->setSubject( 'RECLAMAÇÃO - '.$param['OCO_ASSUNTO'] ); // SubJect (Assunto)
  17. $mail->setHtmlBody( $body ); //'html body'
  18. $mail->SetUseSmtp();
  19. $mail->SetSmtpHost( $object->CTM_HOST, $object->CTM_PORTA, $object->CTM_SECURE ); // SMTP / Porta / Segurança
  20. $mail->SetSmtpUser( $object->CTM_USUARIO, $object->CTM_SENHA ); // Usuario e Senha
  21. // $mail->setReplyTo( $object->CTM_USUARIO );
  22. $mail->send();
  23. }
  24. catch (Exception $e) // in case of exception
  25. {
  26. new TMessage('error', $e->getMessage());
  27. }
  28. }
  29. ?>



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

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

Curso Dominando o Adianti Framework

O material mais completo de treinamento do Framework.
Curso em vídeo aulas + Livro completo + Códigos fontes do projeto ERPHouse.
Conteúdo Atualizado!


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

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. ?>