No puedo hacer que smtps
funcione en absoluto, sin importar qué máquina o versión de Nodo intente (cuatro máquinas diferentes). Nodemailer 2.3.0, Node 0.12.1, 4.2.1, 4.2.3 y 4.4.2, en Windows 10 y OS X 10.10.5 y otros.
$ node -e "require('nodemailer').createTransport('smtps://smtp.gmail.com:587').sendMail({}, function(e) {console.log(e);})"
[Error: 101057795:error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol:openssl\ssl\s23_clnt.c:794:]
Obtengo el mismo resultado para smtps://smtp.postmarkapp.com:587
. CheckTLS y un openssl
ambos se conectan bien, así que estoy bastante seguro de que el problema no está en los servidores SMTP. openssl
indica que todos los protocolos desde SSLv3 hasta TLS1.2 son compatibles, por lo que no debería ser un problema de secureProtocol
como se indica en # 358.
El error apunta a esta línea en openssl
, lo que AFAICT significa que el paquete ServerHello
simplemente no se puede analizar en absoluto.
¿Alguna idea de lo que estoy haciendo mal? ¿O está smtps
simplemente roto en Nodemailer 2.3.0? Gracias.
También probé nodemailer@beta
con el mismo resultado.
El puerto 587 no es smtps sino smtp. La conexión comienza como texto sin formato y luego se actualiza a TLS automáticamente (si es compatible con el servidor) mediante la llamada STARTTLS. Utilice smtp://smtp.gmail.com:587
o smtps://smtp.gmail.com:465
.
Ah, entonces smtps
es equivalente a options.secure
lugar de options.requireTLS
, ¿es eso? está bien.
Sí, la "s" al final de cualquier nombre de protocolo generalmente significa que la conexión debe inicializarse mediante TLS. Esto debería funcionar: smtp://smtp.gmail.com:587/?requireTLS=true
¡Oh, increíble, solo estaba buscando eso! ¡Gracias! : corazón_deslumbrante:
Comentario más útil
Sí, la "s" al final de cualquier nombre de protocolo generalmente significa que la conexión debe inicializarse mediante TLS. Esto debería funcionar:
smtp://smtp.gmail.com:587/?requireTLS=true