Erro ao enviar e-mail na produção

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

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.

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!

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.

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

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.

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 = “
”. /// Message body
“Olá “.$lNome.”.
”.

”.
“Segue abaixo sua nova senha para acesso ao sistema.

”.
”.$lPwd.”

".
“Você pode alterá-la acessando a opção [Alterar senha] dentro do sistema.
”.

”.

”.
Rodapé
”.
“Este é um e-mail automático, gerado pelo sistema, favor não respondê-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!

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.

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,
[table]
[tr][td][font=Arial][size=12px]Parâmetro
[/size][size=12px]Descrição[/size][/font][/td][/tr][tr][td][font=Arial][size=12px]SMTP[/size][size=12px]Endereço do servidor SMTP (string ou variável contendo o Endereço do servidor SMTP).[/size][/font][/td][/tr][tr][td][font=Arial][size=12px]Usr[/size][size=12px]Usuário do servidor SMTP (string ou variável contendo o Usuário do servidor SMTP).[/size][/font][/td][/tr][tr][td][font=Arial][size=12px]Pw[/size][size=12px]Senha do servidor SMTP (string ou variável contendo a Senha do servidor SMTP).[/size][/font][/td][/tr][tr][td][font=Arial][size=12px]De[/size][size=12px]E-mail de origem (string ou variável contendo o E-mail de origem).[/size][/font][/td][/tr][tr][td][font=Arial][size=12px]Para[/size][size=12px]Lista 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.[/size][/font][/td][/tr][tr][td][font=Arial][size=12px]Assunto[/size][size=12px]Título da mensagem (string ou variável contendo o título da mensagem).[/size][/font][/td][/tr][tr][td][font=Arial][size=12px]Mensagem[/size][size=12px]Mensagem a ser enviada (string ou variável contendo a mensagem).[/size][/font][/td][/tr][tr][td][font=Arial][size=12px]Tipo_Mens[/size][size=12px]Tipo do texto da mensagem a ser enviada, sendo: “T” para somente texto ou “H” para texto e/ou html.[/size][/font][/td][/tr][tr][td][font=Arial][size=12px]Cópias[/size][size=12px]Lista 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.[/size][/font][/td][/tr][tr][td][font=Arial][size=12px]Tp_Cópias[/size][size=12px]Tipo 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.[/size][/font][/td][/tr][tr][td][font=Arial][size=12px]Porta[/size][size=12px]Porta utilizada pelo servidor de e-mail. Se omitido, o Scriptcase assumirá os valores default: 25 para porta não segura e465 para porta segura.[/size][/font][/td][/tr][tr][td][font=Arial][size=12px]Tp_Conexão[/size][size=12px]tp_conexao: Indicativo de conexão segura(criptografada) (S) ou não (N). Se omitido, o Scriptcase assumirá o valor default:[b]N.

[/b][/size][/font][/td][/tr]
[/table]

Quando colei a tabela não deu muito certo veja a imagem:

Uploaded with ImageShack.us

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

Disponha Mark

Pessoal, continua com o mesmo erro. :frowning:
Se alguém tiver mais alguma sugestão…

Abraço!

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.

Boa tarde!

Foi o que eu fiz rzorzella, o paulo já havia postado, mas o problema persiste.
Estou achando que não é a macro que está com problema, pois o problema parece estar no endereço de e-mail.
Mas já tentei com outras contas de e-mail e ocorre o mesmo erro!

Ainda tentando!

Obrigado a todos!

Então é o seguinte…

Acho que a porta 587 é criptografada, então o parâmetro logo após a porta deve conter ‘S’ (veja o exemplo abaixo)

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

Bom dia rzorzella.

O meu smtp não é criptografado, mas vou fazer o teste forçando o parametro para ver como se comporta e depois posto o resultado.

Obrigado!

Bom dia Pessoal.

Fiz os testes forçando o parâmetro e continua com o mesmo erro.
Realmente meu SMTP é sem criptografia.

Se alguém tiver mais alguma sugestão…

Abraço!

Testa com outra conta de e-mail de outro servidor