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