[Resolvido] Não envia e-mail

Bom dia. Tenho um formulário que envia um e-mail após salvar os dados. Acontece que de um tempo pra cá os e-mails não são mais enviados. Coincidentemente meu servidor web Linux/PHP já foi reiniciado algumas vezes.

Alguém saberia me sugerir onde eu posso procurar o problema? Há algum parâmetro no Apache/PHP que eu possa conferir e que possa estar gerando esse problema?

A propósito, descartei problema no SMTP porque já testei com 3 contas de e-mails diferentes.

Obrigado.

Preencha neste site de teste do smtp, os dados igualzinho usa no scriptcase, e veja
se recebe o e-mail, ele mostra o log passo a passo do que foi feito durante o envio do e-mail,

Teste o link do domínio do seu servidor se não esta com restrição ‘spam’:
https://www.spamhaus.org/lookup/

Depois crie um controle ‘teste’ no seu projeto e fique usando sc_mail_send() para simular o mesmo, teste enviando para você, varias vezes para ver se esta tudo ok.

Algumas vezes vai acontecer de alguém reclamar que não esta recebendo seus e-mails, pode acontecer de ser o servidor delas que esta com problema, exemplo o caso recentes do UOL HOST.

Bom dia Jailton.

Fiz o teste com o SMTP Test Tool e todas as 3 configurações que tenho funcionaram perfeitamente.

O problema não é questão de SPAM. Meu problema é na macro sc_mail_send. A aplicação não envia o e-mail e não salva o registro.

Desabilitei a linha da macro e o registro é salvo normalmente. Por isso que eu suspeito que é algum problema com Apache/PHP.

Pessoal, achei o problema. Estava no conteúdo do campo “From”.

Pra que a formatação ficasse mais apresentável, o campo “From” estava funcionando dessa maneira (e funcionou por muito tempo rsrsrs):

$mail_from = “[NFO-[usr_per_apelido]] Email Automático naoresponder@grupotecplan.com”;
Ao receber o e-mail, o cabeçalho aparecia assim:
[NFO-Cliente X] Email Automático naoresponder@dominio.com

A partir de agora, acho que ele aceita apenas o e-mail puro no campo. Pelo menos voltou a enviar e-mails.
Mas o cabeçalho fica feio. Agora aparece apenas assim:
" " <email@dominio.com>.

Alguma sugestão de como formatar?

1 Curtida

Essa opção que você quer colocar é Nome do Remetente do e-mail

O PHP-Mailer tem mais opções se quiser experimentar baixar minha lib já adaptada para o SC:
https://1drv.ms/u/s!AsJene7iltp1lDQWDvxWX9tYl2T7?e=mEVMVI

Descompactar em uma pasta temporária.

Depois entrar no SC em Bibliotecas Externas Sistema e criar a biblioteca nome:
PHPMailer-master

Entrar nela e fazer o Upload de todos os arquivos que estão dentro da pasta descompactada
PHPMailer-master, criar as pastas extras e language e upar também os arquivos delas.

Marcar no SC em Bibliotecas Externas para usar a Lib: PHPMailer-master

Depois para usar no seu código só colocar, no código já coloquei até onde por o: [NFO-Cliente X]

// Carrega a BIBLIOTECA de Envio de E-mails Externa
$_biblioteca=sc_url_library('sys', 'PHPMailer-master', '/PHPMailerAutoload.php');

require_once($_biblioteca);

// ENVIA E-MAIL Confirmação de Pagamento.
$crlf="<BR>";

$_Mensagem = <<<HTML
<html>
 <head>
	<meta http-equiv=Content-Type content="text/html; charset=utf-8">	
 </head>
 <body lang=PT-BR>
<p style="font-weight: 400;"><em><img src="https://seu_site.com.br/file/img/logo_tipo.png" alt="" width="100" height="91" /></em></p>
<p style="font-weight: 400;">&nbsp;<br /><em>Prezado(a)</em>:<br />xNomeUsuariox<br /><br />CNPJ/CPF: xCNPJ_CPFx</p>
<p style="font-weight: 400;">Seu pagamento no&nbsp;<strong>PagSeguro</strong>&nbsp;foi confirmado.<br />Refer&ecirc;ncia: xReferenciax<br />Pagamento Data: xPagamentoDatax<br />Pagamento Valor R$: xPagamentoValorx<br />Assinatura Valida at&eacute;: xDataAssinaturaValidax&nbsp;</p>
<p style="font-weight: 400;">Seja bem-vindo ao nosso portal.&nbsp;</p>
<p style="font-weight: 400;">Equipe</p>
<p style="font-weight: 400;"><strong>Seu SITE</strong>.<br /><a href="https://www.seu_site.com.br/site/">https://www.seu_site.com.br/site/</a></p>
 </body>
</html>
HTML;

$_Assunto='Seu SITE - Pagamento Confirmado';

$_Email='destinatario_email@com.br';


// Inicia a classe PHPMailer 
$mail = new PHPMailer(); 

// Método de envio 
$mail->IsSMTP(); 

// Enviar por SMTP 
$mail->Host = "seu_servidor_smtp.com.br"; 

// Você pode alterar este parametro para o endereço de SMTP do seu provedor 
$mail->Port = 587; 


// Usar autenticação SMTP (obrigatório) 
$mail->SMTPAuth = true; // Tipo de segurança esta como 'Auto'

// Usuário do servidor SMTP (endereço de email) 
// obs: Use a mesma senha da sua conta de email 
$mail->Username = 'usuario@seu_servidor.com.br'; 
$mail->Password = 'senha_do_email'; 

// Configurações de compatibilidade para autenticação em TLS 
$mail->SMTPOptions = array( 'ssl' => array( 'verify_peer' => false, 'verify_peer_name' => false, 'allow_self_signed' => true ) ); 

// Você pode habilitar esta opção caso tenha problemas. Assim pode identificar mensagens de erro. 
// $mail->SMTPDebug = 2; 

// Define o remetente 
// Seu e-mail 
$mail->From = "usuario@seu_servidor.com.br"; 

// Seu nome 
$mail->FromName = "Nome Remetente Usuário do E-mail"; // [NFO-Cliente X]

// Define o(s) destinatário(s) 
$mail->AddAddress($_Email, ''); 

// Opcional: mais de um destinatário
// $mail->AddAddress('fernando@email.com'); 

// Opcionais: CC e BCC
// $mail->AddCC('joana@provedor.com', 'Joana'); 
// $mail->AddBCC('roberto@gmail.com', 'Roberto'); 

// Definir se o e-mail é em formato HTML ou texto plano 
// Formato HTML . Use "false" para enviar em formato texto simples ou "true" para HTML.
$mail->IsHTML(true); 

// Charset (opcional) 
$mail->CharSet = 'UTF-8'; 

// Assunto da mensagem 
$mail->Subject = $_Assunto; 

// Corpo do email 
$mail->Body = $_Mensagem; 

// Opcional: Anexos 
// $mail->AddAttachment("/home/usuario/public_html/documento.pdf", "documento.pdf"); 

// Envia o e-mail 
$_Enviado = $mail->Send(); 

// Exibe uma mensagem de resultado 
if ($_Enviado) { 
	// {Status}="Seu email foi enviado com sucesso!"; 
} else { 
	// {Status}="Houve um erro enviando o email: ".$mail->ErrorInfo; 
} 

Tutorial Original e Link Biblioteca Original:

Tu falas pra eu enviar o e-mail usando o PHPMailer ao invés da macro do SC?

Sim, ou esperar alguém ver se sabe por o nome como era antigamente que você usava
e postar aqui, ai tem que esperar um pouco, em alguns projetos uso o PHPMailer-master.

Interessante. Vou estudar o assunto. Conhecimento nunca é demais.

Como sou novo no SC, vai que eu me adapte né. Acho legal ir conhecendo estas opções externas.

Valeu pela ajuda.

1 Curtida

@Jailton fiquei interessado nessa biblioteca.
Estamos usando o PHP mailer mas temos problemas pois apesar da biblioteca já vir no Scriptcase, é a versão 5.2.4 que não tem suporte ao OAUTH2 do google.

Você conseguiu carregar uma versão mais recente do Phpmailer no scriptcase? É isso?
Pode me dar uma luz sobre o assunto?

Na versão que usei antiga não precisei usar OAUTH2 do Google, você deve fazer Download
da versão nova e ver a documentação no GitHub para uso do mesmo, essa nova usa Namespaces,
e o Scriptcase não aceita como padrão, ai deve ver como contonar.