Erro ARRAY no sc_mail_send

No evento onAfterUpdate de um form, eu tento mandar o seguinte email:

sc_mail_send($_server,
    $_user,
    $_pass,
    $_from,
    $mail_to,
    $mail_subject,
    $mail_message,
    $_format,
    $mail_copia,
    $mail_tp_copia,
    $_port,
    $_tpconn,
    $_pdf);

 if ({sc_mail_ok})
 {
  echo "Email enviado com sucesso ao gestor!<br>";
 }
 else
 {
  sc_error_message("Não foi possível enviar o e-mail ao gestor! Erro: {sc_mail_erro} - MAILTO: ".$mail_to." // CCC: ".$mail_copia);
 }

Na tela a aplicação retorna o seguinte erro:

Não foi possível enviar o e-mail ao gestor! Erro: Array - MAILTO: email1@bolinha.com.br // CCC: email2@bolinha.com.br;email3@bolinha.com.br

Ou seja, {sc_mail_erro} retorna apenas a expressão “Array”.

Com isso, a tabela não é salva com as alterações e nem é enviado nenhum e-mail.

Mas se eu comentar o código abaixo, as alterações são salvas e o email é enviado normalmente.

 if ({sc_mail_ok})
 {
  echo "Email enviado com sucesso ao gestor!<br>";
 }
 else
 {
  sc_error_message("Não foi possível enviar o e-mail ao gestor! Erro: {sc_mail_erro} - MAILTO: ".$mail_to." // CCC: ".$mail_copia);
 }

Já tentei esvaziar o CCC, colocar 1 email apenas no CCC, trocar “;” por “,” pra separar os emails e nada.

Alguma dica?

usa try cat ao invés de sc_mail_ok

1 Curtida

Assim?


try {
    sc_mail_send(....
} catch (Exception $e) {
    echo 'Mensagem de erro: ',  $e->getMessage(), "\n";
} 
2 Curtidas

isso, tenta dessa forma e vê se da algum erro.

Fiz assim e não retornou nenhum erro (mas também não chegou o email rsrs). Será que é algum bug no {sc_mail_ok}?

try {	
	sc_mail_send($_server,
				$_user,
				$_pass,
				$_from,
				$mail_to,
				$mail_subject,
				$mail_message,
				$_format,
				$mail_copia,
				$mail_tp_copia,
				$_port,
				$_tpconn,
				$_pdf);
} 
catch (Exception $e) {
    echo 'Mensagem de erro: ',  $e->getMessage(), "\n";
} 	

Você está usando algum redir no after ou algo do tipo ?

Não. No evento onAfterUpdate tenho alguns códigos e em seguida a chamada para a função que envia o email.

Cria uma blank e tenta usar esse código e vê se envia o e-mail… talvez tenha algum código que esteja quebrando o envio.

Será? Mas o curioso é que se eu não usar o teste do {sc_mail_ok}, tudo funciona normalmente, rsrs. A tabela é atualizada e o email enviado.

Mas você está usando o sc_mail_ok no try catch?

só coloca o try catch sem o sc_mail_ok

Não… o try/catch fiz exatamente conforme coloquei antes:

try {	
	sc_mail_send($_server,
				$_user,
				$_pass,
				$_from,
				$mail_to,
				$mail_subject,
				$mail_message,
				$_format,
				$mail_copia,
				$mail_tp_copia,
				$_port,
				$_tpconn,
				$_pdf);
} 
catch (Exception $e) {
    echo 'Mensagem de erro: ',  $e->getMessage(), "\n";
} 	

Era para funcionar.
Liga o modo debug, vê se tem algum erro.
Ou coloca na blank e tenta enviar.

Desculpa… Acabei de limpar tudo aqui, liguei o debug, desativei a saída automática do form e testei de novo o try/catch.

O email é enviado sim. Os testes anteriores que estavam dando erro é porque eu estava usando outra conexão.

Porém, ao usar o {sc_mail_ok} ainda retorna o erro “Array”.

1 Curtida

Entendi, pode ser algum bug do sc…
Depois posso testar para ver se no meu ocorre esse problema.

Esse assunro já foi resolvido? Se sim, coloque aqui como foi a resolução e dê o assunto por concluido; se não, pretendo dar o meu “pitaco”.