Postagem em destaque

Problemas ao tentar enviar email com ZendFramework 2 ou 3.0 ? Ao tentar enviar e-mail, tive alguns problemas e decidi fazer e...

terça-feira, 16 de abril de 2019

Resultado de imagem para email php + gmail



Problemas ao tentar enviar email com ZendFramework 2 ou 3.0 ?


Ao tentar enviar e-mail, tive alguns problemas e decidi fazer este post, porque notei que foi muito difícil achar de fato uma solução para o problema.

Então fiz vários testes de envio, todos conforme a documentação da Zend 2.0.
Email:
Opções de Protocolo:

O mais indicado foi:
SMTP Transport Usage with PLAIN AUTH over TLS

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
use Zend\Mail\Transport\Smtp as SmtpTransport;
use Zend\Mail\Transport\SmtpOptions;

// Setup SMTP transport using PLAIN authentication over TLS
$transport = new SmtpTransport();
$options   = new SmtpOptions(array(
    'name'              => 'example.com',
    'host'              => '127.0.0.1',
    'port'              => 587, // Notice port change for TLS is 587
    'connection_class'  => 'plain',
    'connection_config' => array(
        'username' => 'user',
        'password' => 'pass',
        'ssl'      => 'tls',
    ),
));
$transport->setOptions($options);
Porém mesmo assim a mensagem de que o Modo TLS esta desabilitado era retornado.
Percebi então que deveria passar algum parâmetro para desabilitar a verificação de SSL e TLS.
Li vários posts e não encontrei minha solução em dias.

Porém achei um post que me informava que deveria fazer uma alteração do código fonte da AbstractProtocol da Zend-mail.
Fiz e para minha surpresa resolveu o problema com a alteração do código abaixo:

$contextOptions = array(

            'ssl' => array(
                'verify_peer' => false,
                'verify_peer_name' => false
            )
        );

        $context = stream_context_create($contextOptions);

        // open connection
        $this->socket = stream_socket_client($remote, $errorNum, $errorStr, self::TIMEOUT_CONNECTION, STREAM_CLIENT_CONNECT, $context);            
//        $this->socket = stream_socket_client($remote, $errorNum, $errorStr, self::TIMEOUT_CONNECTION);


Segue abaixo fonte:

Abraços








Nenhum comentário:

Postar um comentário