Autor Tópico: [RESOLVIDO] - Envio de e-mail  (Lida 914 vezes)

ilanocf

  • Intermediário
  • ***
  • Mensagens: 124
    • Email
[RESOLVIDO] - Envio de e-mail
« Online: Junho 28, 2016, 01:58:39 pm »
Olá pessoal,

Estou tentando enviar um e-mail a partir de um formulário, da seguinte forma:

Citar
sc_mail_send({Email_SMTP},
          {Email_Usuario},
          {Usuario_Senha},
          {Usuario_Email},
          {Email_Destino},
          {Email_Assunto},
          {Email_Mensagem},
          "H",
          "",
          "",
          {Email_Porta},
          {Email_Conexao},
          "");

if ({sc_mail_ok})
{
   echo "Enviados {sc_mail_count} e-mail com sucesso !!";
}
else
{
   sc_error_message({sc_mail_erro});
};

Só que está me retornando o seguinte erro:

Citar
Fatal error: Uncaught exception 'Swift_TransportException' with message 'Failed to authenticate on SMTP server with username "ilano@mdierp.com.br" using 2 possible authenticators' in /home/mdierpco/public_html/scriptcase/prod/third/swift/classes/Swift/Transport/Esmtp/AuthHandler.php:181 Stack trace: #0 /home/mdierpco/public_html/scriptcase/prod/third/swift/classes/Swift/Transport/EsmtpTransport.php(333): Swift_Transport_Esmtp_AuthHandler->afterEhlo(Object(Swift_SmtpTransport)) #1 /home/mdierpco/public_html/scriptcase/prod/third/swift/classes/Swift/Transport/AbstractSmtpTransport.php(118): Swift_Transport_EsmtpTransport->_doHeloCommand() #2 /home/mdierpco/public_html/scriptcase/prod/third/swift/classes/Swift/Mailer.php(79): Swift_Transport_AbstractSmtpTransport->start() #3 /home/mdierpco/public_html/scriptcase/app/contato/CadEmails/CadEmails_apl.php(1422): Swift_Mailer->send(Object(Swift_Message), Array) #4 /home/mdierpco/public_html/scriptcase/app/contato/CadEmails/CadEmails_apl.php(1006): CadEmails_apl->sc_btn_BtnTestaEm in /home/mdierpco/public_html/scriptcase/prod/third/swift/classes/Swift/Transport/Esmtp/AuthHandler.php on line 181

Como posso corrigir isso?

Grato,

Ilano.
« Última modificação: Setembro 21, 2016, 09:13:08 am por Ronyan Alves »

Ronyan Alves

  • Administrator
  • Avançado
  • *****
  • Mensagens: 353
Re:Envio de e-mail
« Responder #1 Online: Junho 28, 2016, 02:42:10 pm »
"using 2 possible authenticators" geralmente é questão de segurança.
Altera a senha do email utilizado no "Email_SMTP" e tenta enviar novamente.
--

Ronyan Alves
Equipe Scriptcase

ilanocf

  • Intermediário
  • ***
  • Mensagens: 124
    • Email
Re:Envio de e-mail
« Responder #2 Online: Julho 08, 2016, 10:08:09 pm »
Deu certo galera!!!

No evento AfterInsert ficou assim:

Citar

$para ={Contato_Email};

$sql = "SELECT Email_ID, Usuario_Email, Email_SMTP, ";
$sql .= "Email_Usuario, Usuario_Senha, Email_Contato, ";
$sql .= "Email_Assunto, Email_Mensagem ";
$sql .= "FROM tb_email ";
$sql .= "WHERE Email_Contato = 1 ";

sc_lookup(Ds, $sql);

if (!empty({Ds}))
{
   $de = {Ds[0][1]};
   $smtp = {Ds[0][2]};
   $user = {Ds[0][3]};
   $senha = sc_decode({Ds[0][4]});
   $de = {Ds[0][1]};
   $assunto = "Confirmação de Cadastro - EuRegistro";
   $mensagem = {Ds[0][7]};
   
   try
      {
      sc_mail_send($smtp, $user, $senha, $de, $para, $assunto, $mensagem, 'H', '', 'CCC', '25', '', '');
      
      } catch (Exception $e) {
           echo $e->getMessage();
       };
};

« Última modificação: Julho 11, 2016, 07:35:50 am por ilanocf »

ilanocf

  • Intermediário
  • ***
  • Mensagens: 124
    • Email
Re:[RESOLVIDO] - Envio de e-mail
« Responder #3 Online: Julho 18, 2016, 01:19:07 pm »
Galera,

Eu fiz os testes no meu servidor e funcionou perfeitamente, por isso confirmei o sucesso da postagem, contudo, ao levar para o cliente olha só o que aconteceu:

Ocorreu um erro ao enviar e-mail ao cliente: Expected response code 250 but got code "530", with message "530 5.7.0 Must issue a STARTTLS command first. n32sm4196880qkh.20 - gsmtp "

Isso pode ser alguma questão de segurança no servidor Windows do cliente? Como resolvo isso?

Grato,

Ilano.

Alexandre Pereira Bühler

  • Expert
  • *****
  • Mensagens: 1658
  • Nunca estabeleça um teto para os seus rendimentos.
    • Simão & Bühler Ltda
    • Email
Re:Envio de e-mail
« Responder #4 Online: Julho 19, 2016, 07:35:18 am »
No php 5.6 ele passou a verificar conexões com ssl e tls.
Vide:
https://kamihouse.wordpress.com/2015/01/05/verificacao-de-certificado-ssl-com-php-5-6/
http://php.net/manual/pt_BR/migration56.openssl.php
http://php.net/manual/pt_BR/migration56.new-features.php

SSL/TLS improvements ¶

A wide range of improvements have been made to the SSL/TLS support in PHP 5.6. These include enabling peer verification by default, supporting certificate fingerprint matching, mitigating against TLS renegotiation attacks, and many new SSL context options to allow more fine grained control over protocol and verification settings when using encrypted streams.

These changes are described in more detail in the OpenSSL changes in PHP 5.6.x section of this migration guide.
--
Alexandre Pereira Bühler
https://www.simaoebuhler.com.br
Hospedagem compartilhada Scriptcase desenvolvimento e produção. Temos servidores dedicados Scriptcase.
Eu RTFM todo dia e você?

Ronyan Alves

  • Administrator
  • Avançado
  • *****
  • Mensagens: 353
Re:Envio de e-mail
« Responder #5 Online: Julho 19, 2016, 08:19:42 am »
Olha a documentação da macro.
Tem um novo parâmetro ( SSL ) para solucionar este erro.
--

Ronyan Alves
Equipe Scriptcase

ilanocf

  • Intermediário
  • ***
  • Mensagens: 124
    • Email
Re:Envio de e-mail
« Responder #6 Online: Julho 20, 2016, 07:40:19 am »
Olá pessoal,

Primeiro, quero agradecer a atenção e paciência de todos.

Pois é gente, eu vi agora no link Macros Scriptcase a macro SSL que diz:

Citar
Parâmetro para adição das configurações de SSL. Caso seja necessário adicionar mais de uma configuração, use ";" para separá-las. Ex: $ssl = 'allow_self_signed=false;verify_peer=false';

Existem outros exemplos para serem passados nesse parâmetro (SSL) da macro sc_mail_send?

E o que significam esses parâmetros allow_self_signed, verify_peer, e outros mais, pois preciso informar ao cliente o significado e a importância de cada um deles.

Alexandre Pereira Bühler

  • Expert
  • *****
  • Mensagens: 1658
  • Nunca estabeleça um teto para os seus rendimentos.
    • Simão & Bühler Ltda
    • Email
--
Alexandre Pereira Bühler
https://www.simaoebuhler.com.br
Hospedagem compartilhada Scriptcase desenvolvimento e produção. Temos servidores dedicados Scriptcase.
Eu RTFM todo dia e você?

ilanocf

  • Intermediário
  • ***
  • Mensagens: 124
    • Email
Re:Envio de e-mail
« Responder #8 Online: Julho 21, 2016, 02:50:03 pm »
Pessoal,

Tô fazendo o envio na forma abaixo. O problema que mesmo em modo de debug ainda assim não dá mensagem alguma de erro mas também não envia o e-mail.

Citar
$mensagem = "Olá ".{CLI_RazaoSocial}.", <br />";
$mensagem .= "mensagem_de_texto_com_caracteres_em_html";

$smtp = "endereco_do_smtp";
$usuario = "nome_do_usuario";
$senha = "senha_do_usuario";
$de = "email_do_destinatario";
$para = strMinuscula({CLI_Email}); /* Essa biblioteca strMinuscula já foi testada e funciona perfeitamente*/
$assunto = "Confirmação de Cadastro";
$porta = "25";
$tipoconexao = "N";
$ssl = 'allow_self_signed=false;verify_peer=false'; /* Esta variável não está sendo usada, e mesmo usada também não fez diferença */


   try
      {
      sc_mail_send($smtp, $usuario, $senha, $de, $para, $assunto, $mensagem, 'H', '', 'CCC', $porta, $tipoconexao, '');
     
      } catch (Exception $e) {
           echo $e->getMessage();
       };

Ronyan Alves

  • Administrator
  • Avançado
  • *****
  • Mensagens: 353
Re:Envio de e-mail
« Responder #9 Online: Julho 22, 2016, 07:59:53 am »
Utiliza o código abaixo para verificar se houve erro:
if ({sc_mail_ok}){
          echo "Enviados {sc_mail_count} e-mail com sucesso !!";
}else{
          sc_error_message({sc_mail_erro});
}
--

Ronyan Alves
Equipe Scriptcase

ilanocf

  • Intermediário
  • ***
  • Mensagens: 124
    • Email
Re:Envio de e-mail
« Responder #10 Online: Julho 22, 2016, 10:29:34 am »
Olá Ronyan Alves,

Primeiro, quero agradecer sua atenção.

Cara, a mensagem de erro retornada é:

Citar
Array to string conversion
Array

ilanocf

  • Intermediário
  • ***
  • Mensagens: 124
    • Email
Re:Envio de e-mail
« Responder #11 Online: Julho 22, 2016, 11:44:55 am »
Citar
Address in mailbox given [] does not comply with RFC 2822, 3.6.2.

Undefined variable: porta

ilanocf

  • Intermediário
  • ***
  • Mensagens: 124
    • Email
Re:Envio de e-mail
« Responder #12 Online: Julho 22, 2016, 02:05:23 pm »
Última mensagem de erro:

Citar
allow_self_signed=false;verify_peer=false Failed to authenticate on SMTP server with username "admin@mdierp.com.br" using 2 possible authenticators

ilanocf

  • Intermediário
  • ***
  • Mensagens: 124
    • Email
Re:Envio de e-mail
« Responder #13 Online: Agosto 09, 2016, 06:25:59 pm »
Olá pessoal,

O problema com o envio de e-mail continua:
Connection could not be established with host smtp.gmail.com [Connection timed out #110]

Criei a biblioteca:

Citar
<?php
function EnviarEmail($smtp, $usuario, $senha, $de, $para, $assunto, $mensagem, $porta, $tipoconexao, $ssl)
{
   try
      {
      /* sc_mail_send(SMTP, Usr, Pw, De, Para, Assunto, Mensagem, Tipo_Mens, Cópias, Tp_Cópias, Porta, Tp_Conexao, Anexo) */
         sc_mail_send($smtp, $usuario, $senha, $de, $para, $assunto, $mensagem, 'H', '', 'CCC', $porta, $tipoconexao, '', $ssl);
      if ({sc_mail_ok}){
              echo "<div style='text-align:center; font-size:12px; font-weight:bold; padding:20px 0px 20px 0px;'>{sc_mail_count} e-mail foi enviado comsucesso!!</div>";
      }else{
              sc_error_message({sc_mail_erro});
      }
     
      } catch (Exception $e) {
           echo $e->getMessage();
       };   
};
?>


E no evento OnValidate, foi inserido o código abaixo:

Citar
$smtp = {SMTP};
$usuario = {Usuario};
$senha = {Senha};
$de = {Email};
$para = "ilanocaldas@gmail.com";
$assunto = {Assunto};
$mensagem = {Mensagem};
$porta = {Porta};
$tipoconexao = {Conexao};
$autoassnado = {ausoassinado};
$pares = {verificapares};
$senha2 = sc_encode({Senha});
$id = [mailID];

$sql = "UPDATE tb_email SET
Usuario_Email = '$de',
Email_SMTP = '$smtp',
Email_Usuario = '$usuario',
Usuario_Senha = '$senha2',
Email_Porta = '$porta',
Email_Conexao = '$tipoconexao',
Email_Autoassinado = '$autoassnado',
Email_Verificapares = '$pares'
WHERE Email_ID = $id
";


sc_exec_sql ($sql);

preencheCampos();

$ssl = "allow_self_signed=$autoassnado;verify_peer=$pares";

EnviarEmail($smtp, $usuario, $senha, $de, $para, $assunto, $mensagem, $porta, $tipoconexao, $ssl);

Existe algo de errado? Em um outro cliente, utilizo a mesma biblioteca e não tive problemas. O que pode estar acontecendo com esse caso? No Outlook o cliente tem essa conta configurada e funciona tranquilamente. Estou precisando de ajuda urgente, pois já estou com esse problema com esse cliente há muito tempo e já está ficando uma situação chata.

Alexandre Pereira Bühler

  • Expert
  • *****
  • Mensagens: 1658
  • Nunca estabeleça um teto para os seus rendimentos.
    • Simão & Bühler Ltda
    • Email
Re:Envio de e-mail
« Responder #14 Online: Agosto 09, 2016, 06:31:39 pm »
Não existe um firewall bloqueando esta conexão?
--
Alexandre Pereira Bühler
https://www.simaoebuhler.com.br
Hospedagem compartilhada Scriptcase desenvolvimento e produção. Temos servidores dedicados Scriptcase.
Eu RTFM todo dia e você?