Autor Tópico: Erro ao enviar e-mail na produção  (Lida 2558 vezes)

markfazolin

  • Novato
  • *
  • Mensagens: 17
Erro ao enviar e-mail na produção
« Online: Outubro 29, 2013, 03:34:10 pm »
Boa tarde pessoal.

Estou com um erro incomum e gostaria da ajuda de vocês.

Tenho uma rotina de envio de e-mail que funciona perfeitamente no ambiente de desenvolvimento.
Mas quando coloco a aplicação no ambiente de produção ocorre o seguinte erro:

ERRO   
preg_match(): Compilation failed: internal error: previously-checked referenced subpattern not found at offset 4246

Fatal error: Uncaught exception 'Swift_RfcComplianceException' with message 'Address in mailbox given [markfazolin@xxxxxxxxx.com.br] does not comply with RFC 2822, 3.6.2.' in /opt/lampp/htdocs/caoac/_lib/prod/third/swift/classes/Swift/Mime/Headers/MailboxHeader.php:308 Stack trace: #0 /opt/lampp/htdocs/caoac/_lib/prod/third/swift/classes/Swift/Mime/Headers/MailboxHeader.php(238): Swift_Mime_Headers_MailboxHeader->_assertValidAddress('markfazolin@mic...') #1 /opt/lampp/htdocs/caoac/_lib/prod/third/swift/classes/Swift/Mime/Headers/MailboxHeader.php(96): Swift_Mime_Headers_MailboxHeader->normalizeMailboxes(Array) #2 /opt/lampp/htdocs/caoac/_lib/prod/third/swift/classes/Swift/Mime/Headers/MailboxHeader.php(60): Swift_Mime_Headers_MailboxHeader->setNameAddresses(Array) #3 /opt/lampp/htdocs/caoac/_lib/prod/third/swift/classes/Swift/Mime/SimpleHeaderFactory.php(60): Swift_Mime_Headers_MailboxHeader->setFieldBodyModel(Array) #4 /opt/lampp/htdocs/caoac/_lib/prod/third/swift/classes/Swift/Mime/SimpleHeaderSet.php(75): Swift_Mime_ in /opt/lampp/htdocs/caoac/_lib/prod/third/swift/classes/Swift/Mime/Headers/MailboxHeader.php on line 308

O mais interessante é que os ambientes ficam no mesmo servidor.

Será que alguém já passou por isso?

Agradeço a todos!

Abraço

paulomarcelo

  • Expert
  • *****
  • Mensagens: 638
    • Email
Re:Erro ao enviar e-mail na produção
« Responder #1 Online: Outubro 31, 2013, 02:45:36 pm »
Comigo só deu erro quando eu estava utilizando o e-mail default que vinha na rotina que era uma conta netmake no yahoo pois acho que cancelaram a conta ou trocaram a senha, quando eu efetuei a correção das credenciais funcionou perfeitamente.

markfazolin

  • Novato
  • *
  • Mensagens: 17
Re:Erro ao enviar e-mail na produção
« Responder #2 Online: Outubro 31, 2013, 03:05:34 pm »
Então "paulomarcelo", o que mais está me deixando encabulado é que no modo de "design" funciona corretamente, mas quando publico a aplicação é que ocorre o erro.
Eu tinha uma outra aplicação, que funciona bem parecido, e esta funcionando corretamente, usei ela como base.
Já até revi todos os exemplos do scriptcase, para conferir se não tinha esquecido de algum detalhe, mas está tudo correto.

Enfim, ainda procurando uma solução.

Obrigado!

saulobborges

  • Expert
  • *****
  • Mensagens: 1392
    • SGi Sistemas
    • Email
Re:Erro ao enviar e-mail na produção
« Responder #3 Online: Outubro 31, 2013, 04:03:14 pm »
Você esta usando um endereço de e-mail válido? segundo o erro o endereço é markfazolin@xxxxxxxxx.com.br e isso não é válido... esse domínio não existe.

paulomarcelo

  • Expert
  • *****
  • Mensagens: 638
    • Email
Re:Erro ao enviar e-mail na produção
« Responder #4 Online: Outubro 31, 2013, 04:43:17 pm »
acho que ele colocou estes xxxx para evitar spam no e-mail dele Saulo, como ele disse que a rotina roda em ambiente de desenvolvimento, logo não deve estar assim.

saulobborges

  • Expert
  • *****
  • Mensagens: 1392
    • SGi Sistemas
    • Email
Re:Erro ao enviar e-mail na produção
« Responder #5 Online: Outubro 31, 2013, 07:59:46 pm »
acho que ele colocou estes xxxx para evitar spam no e-mail dele Saulo, como ele disse que a rotina roda em ambiente de desenvolvimento, logo não deve estar assim.

É mais é melhor perguntar... já vi cada coisa. rsrsrsrsrs

Esse erro esta relacionado ao RFC 2822 que é uma norma para envio de e-mail e o SwiftMailer que é a biblioteca que o SC usa se baseia nessa norma para validar as mensagens, tem que verificar a norma e adequar a mensagem.

http://pt.wikipedia.org/wiki/MIME

paulomarcelo

  • Expert
  • *****
  • Mensagens: 638
    • Email
Re:Erro ao enviar e-mail na produção
« Responder #6 Online: Outubro 31, 2013, 09:11:01 pm »
O ideal era ver o código, para verificar a forma que ele está chamando a função ordem dos parâmetros, só com o erro fica difícil de analisar.

markfazolin

  • Novato
  • *
  • Mensagens: 17
Re:Erro ao enviar e-mail na produção
« Responder #7 Online: Novembro 01, 2013, 07:57:18 am »
Bom dia a todos.

Saulo, apenas ocultei o meu e-mail para evitar problemas...

Pessoal segue abaixo uma cópia do código que fica no evento OnValidate de um controle:

// ----------  inicio do codigo ----------
$lUsr = {login};
$lCpf = {cpf};
$lEmail = {email};
$lSql = "
SELECT
  rep_nome,
  rep_cpf,
  rep_login,
  rep_ativo,
  rep_email
FROM representantes
WHERE (rep_cpf   = '".$lCpf."')
  AND (rep_login = '".$lUsr."')
  AND (rep_email = '".$lEmail."')
  AND (rep_ativo = 1)
";
sc_lookup(ds, $lSql);

///  verificando se o usuario existe e se as informações estão corretas
if (isset({ds[0][0]})) {   
   ///  gerando a nova senha
   $lPwd = substr($lUsr, -3).date("sz");
   $lPwdMd5 = md5($lPwd."#chavefixa#".$lUsr."#".$lCpf);
   $lNome = {ds[0][0]};
   ///  gravando a nova senha no banco de dados
   $lUpd = "
      UPDATE representantes SET
        rep_senha = '".$lPwdMd5."'
      WHERE (rep_cpf   = '".$lCpf."')
      ";
   sc_exec_sql($lUpd);
   ///  enviando o email com a nova senha para o usuario
   $mail_smtp_server = 'smtp.xxxxxx.com.br:587';            ///  SMTP server name or IP address
   $mail_smtp_user   = 'naoresponda@xxxxxx.com.br';         ///  SMTP user name
   $mail_smtp_pass   = 'senha';                        ///  SMTP password
   $mail_from        = 'naoresponda@xxxxxx.com.br';                 ///  From email
   $mail_to          = $lEmail;                           ///  To email
        $mail_subject     = 'Esqueceu a senha: nova senha';         ///  Message subject
   $mail_message     = "<br />".                           ///  Message body
      "Ol&aacute; ".$lNome.".<br />".
      "<br />".
      "Segue abaixo sua nova senha para acesso ao sistema.<br><br>".
      "<b>".$lPwd." </b><br /><br />".
      "Você pode alter&aacute;-la acessando a opção [Alterar senha] dentro do sistema.<br />".
      "<br />".
      "<br />".
      "<b>Rodapé</b><br />".
      "Este &eacute; um e-mail autom&aacute;tico, gerado pelo sistema, favor não respond&ecirc;-lo.";
   $mail_format      = 'H';                              ///  Message format: (T)ext or (H)tml
   sc_mail_send(
      $mail_smtp_server,
      $mail_smtp_user,
      $mail_smtp_pass,
      $mail_from,
      $mail_to,
      $mail_subject,
      $mail_message,
      $mail_format);
   if ({sc_mail_ok}) {
      ///  voltando para a tela de login
      sc_redir(control);
   } else {
      sc_erro_message({sc_mail_erro});
   }
} else {
   ///  usuario nao encontrado ou os dados não conferem
   sc_erro_mensagem("Usuário não encontrado ou as informações não conferem.");
}
// ----------  fim do codigo ----------

Alterei os servidores e senhas para evitar problemas.

Obrigado a todos pela atenção novamente!

paulomarcelo

  • Expert
  • *****
  • Mensagens: 638
    • Email
Re:Erro ao enviar e-mail na produção
« Responder #8 Online: Novembro 01, 2013, 12:19:53 pm »
Veja no webhelp esta chamada abaixo, a sua a porta ta junto com a variável smtp, tenta chamar a função se espelhando no Ex2.

Ex. 2: Utilizando variáveis como parâmetros e definindo a porta.
Código: [Selecionar]
sc_mail_send([glo_smtp], [usuar], [glo_pw], {origem}, {destino}, {assunto}, {mensagem}, 'T', [glo_copias], 'CCC', '419', 'S', {anexos});
onde 419 é a  porta, observa o número e sequência de parâmetros,
Parâmetro
Descrição
SMTPEndereço do servidor SMTP (string ou variável contendo o Endereço do servidor SMTP).
UsrUsuário do servidor SMTP (string ou variável contendo o Usuário do servidor SMTP).
PwSenha do servidor SMTP (string ou variável contendo a Senha do servidor SMTP).
DeE-mail de origem (string ou variável contendo o E-mail de origem).
ParaLista de e-mails que devem receber cópia da mensagem , podendo ser uma string ou variável contendo um ou mais e-mail's, separados por ";", ou uma variável contendo um array de e-mail's.
AssuntoTítulo da mensagem (string ou variável contendo o título da mensagem).
MensagemMensagem a ser enviada (string ou variável contendo a mensagem).
Tipo_MensTipo do texto da mensagem a ser enviada, sendo: "T" para somente texto ou "H" para texto e/ou html.
CópiasLista de e-mails que devem receber cópia da mensagem, podendo ser uma string ou variável contendo um ou mais e-mail's, separados por ";", ou uma variável contendo um array de e-mail's.
Tp_CópiasTipo de cópias a serem enviadas: CCC para cópias visíveis e BCC para cópias ocultas. Se omitido, o Scriptcase assumirá o valor default: BCC.
PortaPorta utilizada pelo servidor de e-mail. Se omitido, o Scriptcase assumirá os valores default: 25 para porta não segura e465 para porta segura.
Tp_Conexãotp_conexao: Indicativo de conexão segura(criptografada) (S) ou não (N). Se omitido, o Scriptcase assumirá o valor default:N.


paulomarcelo

  • Expert
  • *****
  • Mensagens: 638
    • Email
Re:Erro ao enviar e-mail na produção
« Responder #9 Online: Novembro 01, 2013, 12:23:26 pm »
Quando colei a tabela não deu muito certo veja a imagem:



Uploaded with ImageShack.us

markfazolin

  • Novato
  • *
  • Mensagens: 17
Re:Erro ao enviar e-mail na produção
« Responder #10 Online: Novembro 04, 2013, 09:20:20 am »
Bom dia paulomarcelo!

Obrigado pela resposta!
Não tinha prestado atenção neste parâmetro.

Vou testar e mais tarde posto o resultado!

Abraço

Mark

paulomarcelo

  • Expert
  • *****
  • Mensagens: 638
    • Email
Re:Erro ao enviar e-mail na produção
« Responder #11 Online: Novembro 04, 2013, 09:21:54 am »
Disponha Mark

markfazolin

  • Novato
  • *
  • Mensagens: 17
Re:Erro ao enviar e-mail na produção
« Responder #12 Online: Novembro 04, 2013, 02:48:46 pm »
Pessoal, continua com o mesmo erro. :(
Se alguém tiver mais alguma sugestão...

Abraço!

rzorzella

  • Intermediário
  • ***
  • Mensagens: 111
    • Email
Re:Erro ao enviar e-mail na produção
« Responder #13 Online: Novembro 04, 2013, 09:10:37 pm »
Pelo que reparei vc colocou a porta no parâmetro smtp_server.    ('smtp.xxxxxx.com.br:587'; )

Tira dali a porta "587" e coloca no parâmetro da porta conforme pede a macro.

ex:
sc_mail_send($mail_smtp_server,
          $mail_smtp_user,
                         $mail_smtp_pass,
          $mail_from,
          $mail_to,
          $mail_subject,
          $mail_message,
          $mail_format,
             '','', '587','');



Abs



Ricardo Z.

paulomarcelo

  • Expert
  • *****
  • Mensagens: 638
    • Email
Re:Erro ao enviar e-mail na produção
« Responder #14 Online: Novembro 04, 2013, 09:16:49 pm »
Pelo que reparei vc colocou a porta no parâmetro smtp_server.    ('smtp.xxxxxx.com.br:587'; )

Tira dali a porta "587" e coloca no parâmetro da porta conforme pede a macro.

ex:
sc_mail_send($mail_smtp_server,
          $mail_smtp_user,
                         $mail_smtp_pass,
          $mail_from,
          $mail_to,
          $mail_subject,
          $mail_message,
          $mail_format,
             '','', '587','');



Abs



Ricardo Z.

Foi o que eu postei e inclusive postei um exemplo onde a porta fica na assinatura do método e a documentação a respeito da macro.