Email funciona em prod mas em dev não

pessoal, até sexta-feira os e-mails funcionavam corretamente, tanto em dev quanto em produção. porém, hoje eles não estão mais funcionando em dev (acredito que em produção está normal pois não subi nenhuma atualização), e isso está acontecendo em todas as aplicações que disparam e-mails.

eu faço da seguinte forma e sempre funcionou: tenho dois arquivos na biblioteca interna, um com todas as informações referentes ao e-mail (servidor, porta, senha, etc.) e outro com o corpo do e-mail, no qual passo o texto a ser enviado. chamo essas bibliotecas da seguinte forma:

sc_include("Fu_EnviaEmail.php", "prj");
sc_include("Aprovacao_GG_Chapa.php", "prj");
$msg = email_chapa_gg($nome, $cd, $Id, $valor);
send_email_portalunidades($msg, $email, 'Sistema de Gestão de Auditoria');

alguém pode me ajudar? será que mudou alguma coisa ou estou fazendo algo errado…?

Tu aplicou alguma atualização de versão no SC?

se sim, recomendo avisar a NetMake pelo e-mail de suporte que isso está ocorrendo na sua versão e, se possivel, voltar versão pra testar se continua ocorrendo.

sc_include entrou em desuso.

Bibliotecas Internas substituiu.

https://www.youtube.com/watch?v=91hAk3todwk

1 Curtida

obrigada, @Costenaro! se não der certo mesmo eu entro em contato com o suporte, vou fazer alguns testes antes…

@InfinitusWeb, ao usar a biblioteca interna me da essa mensagem, essa biblioteca que estou tentando incluir é a que tem os dados referentes ao e-mail (servidor, porta, senha, etc.):
image

nessa biblioteca uso a macro sc_send_mail_api($var_config); para fazer as configurações…

1 Curtida

Em bibliotecas internas você deve ter apenas um único método.

Mostre o conteúdo de sua biblioteca.

hmmm, tenho dois metodos nessa biblioteca mesmo, vou arrumar aqui…

está assim haroldo:
<?php

    function send_email_portalunidades($msg, $to, $subject){	
    	$smtp_server = "*";
    	$smtp_port = "*";
    	$smtp_user = "*";
    	$smtp_password = "*";
    	$from_email = "*";
    	$from_name = "Portal Gestão Unidades";
    	
    	if ( 'smtp' == 'smtp' ){
    		$var_config = array(

    			'profile' => '',

    			'settings' => [
    					'gateway'       => 'smtp',
    					'smtp_server'   => $smtp_server,
    					'smtp_port'     => $smtp_port,
    					'smtp_user'     => $smtp_user,
    					'smtp_password' => $smtp_password,
    					'from_email'    => $from_email,
    					'from_name'     => $from_name
    			],

    			'message' => [
    					   'html'          => $msg,
    					   'text'          => $msg,
    					   'to'            => $to,
    					   //'attachments' => array('/var/www/arquivo.txt','/var/www/arquivo2.txt'),
    					   'subject'       => $subject
    			]
    		);

    		sc_send_mail_api($var_config);
    	};		
    };



    ?>

tinha outro metodo, ai tirei ele ja

:thinking: :thinking: :thinking: :thinking: :thinking: :thinking: :thinking: :thinking:

sc_send_mail_api($var_config)

sc_send_mail_api??? Está configurado?
Entendi, está usando como smtp.

Qual erro dá?

realmente, a condição if (‘smtp’ == ‘smtp’) não faz sentido, já que está comparando a mesma coisa…

quanto à sc_send_mail_api, está configurada corretamente. não mexi mais nela até parar de funcionar

ent, na verdade o unico erro que está dando é apenas na hora de incluir que diz que so vai ser processada a biblioteca por meio de sc_include, mas ao disparar o email so simplesmente não envia, porem não mostra nenhum erro

troca por sc_send_mail

Eu particularmente uso phpmailer para envio de email.

Força atualização do SC.

troquei e deu este erro:
PHP Fatal error: Uncaught Error: Call to undefined function sc_send_mail() in C:\inetpub\wwwroot\scriptcase\app\GestaoAdmDist\Log_Capa_Chapa_form\Log_Capa_Chapa_form_apl.php:5094
Stack trace:
#0 C:\inetpub\wwwroot\scriptcase\app\GestaoAdmDist\Log_Capa_Chapa_form\Log_Capa_Chapa_form_apl.php(1909): Log_Capa_Chapa_form_apl->send_email_portalunidades(’\r\n\t\t<!DOCTYPE h…’, ‘1234@GR…’, ‘Sitema de Gest\xC3…’)

está passando certinho os parâmetros, pelo menos…

desculpa, a macro correta é:

fiz assim, seguindo a documentação da macro:
function send_email_portalunidades($msg, $to, $subject){
$smtp_server = “";
$smtp_port = “25”;
$smtp_user = "
”;
$smtp_password = “";
$from_email = "
”;
$from_name = “Portal Gestão Unidades”;
$reply_to = “**********”;

sc_mail_send(
    $smtp_server,
    $smtp_user,
    $smtp_password, 
    $from_email, 
    $to, 
    $subject, 
    $msg,
    'H', 
    '', 
    '', 
    $smtp_port,
    '', 
    '', 
    '', 
    $reply_to
);

}

$nome = "pessoa 1";
$cd = "3002";
$Id = "95";
$valor = "100";
$email = "**********";
$msg = "ADMINISTRATIVO DISTRIBUIÇÃO\nAprovação de Chapa\n\nPrezado(a) $nome,\n\nÉ necessária aprovação de chapa referente ao CD $cd.\n\nNº Solicitação:$Id no valor R$ $valor.\n\nClique aqui para abrir o sistema SGA\n\nNão responda esta mensagem, pois foi enviado por um sistema automático que não processa respostas.\n\nAtenciosamente,\nAdministrativo Distribuição CDs\n\n";
$subject = "Sistema de Gestão de Auditoria";

send_email_portalunidades($msg, $email, $subject);

depurei, e está vindo tudo certinho, o problema é o email mesmo que não chega…

inclusive testei para ver se estava fazendo conexão pelo powershell e retornou true

A macro retorna erro quando não envia, você testa esse erro?

sc_mail_send([glo_smtp], '', '', 'de@netmake.com.br', {destino}, {assunto}, {mensagem}, 'H');

if ( {sc_mail_ok} ) {

  echo "Enviados {sc_mail_count} e-mail com sucesso!!";

} else {

  sc_error_message({sc_mail_erro});

}

haroldo, me retornou este erro:
sc_mail_ok: sc_mail_count: 0 sc_mail_erro: Array ( [0] => teste@teste.com.br ) Erro ao enviar email: Array ( [0] => teste@teste.com.br )

ou seja, erro no e-mail que estou passando para ser enviado a mensagem, testei com outros e deu o mesmo problema, estou depurando assim:

echo "sc_mail_ok: " . {sc_mail_ok} . “\n”;
echo "sc_mail_count: " . {sc_mail_count} . “\n”;
echo "sc_mail_erro: ";
print_r({sc_mail_erro});

if ( {sc_mail_ok} ) {
echo “Enviados {sc_mail_count} e-mail com sucesso!!”;
} else {
echo "Erro ao enviar email: ";
print_r({sc_mail_erro});
}

precisa ver o erro direitinho.

tive um avanço, um email foi enviado, so que depois parou pois fica dando este erro agora

Atenção

Array

Script: C:inetpubwwwrootscriptcaseappGestaoAdmDistLog_Capa_Chapa_formLog_Capa_Chapa_form_apl.php (5321)

não sei se é importante, pois so começou a exibir depois que habilitei a opção de erros no script…

quando vou verificar o codigo fonte nesta linha tem isso:

  1. if (!empty($this->Campos_Mens_erro))
  2. {
  3. $this->Erro->mensagem(__FILE__, __LINE__, "critica", $this->Campos_Mens_erro);
  4. $this->Campos_Mens_erro = "";
  5. }

e aquele mesmo erro continua: c_mail_ok: sc_mail_count: 0 sc_mail_erro: Array ( [0] => maria@grupo.com.br )

1 Curtida

Tem que continuar investigando.

Você não está enviando emails em massa?

não, apenas um e-mail por vez

pode ser algo relacionado à versão do scriptcase ou do php?

cheguei a um ponto em que não sei mais o que depurar, nem onde colocar mais echos…

fiz até uma aplicação blank por fora para testar e deu o mesmo erro

sua versão do prod da produção não é a mesma do desenvolvimento?

Tenta com PHPMailer.