Cómo reparar ssl.SSLError: [SSL: WRONG_VERSION_NUMBER] número de versión incorrecto (_ssl.c:1056)?

2 minutos de lectura

Avatar de usuario de TheRealTengri
elrealtengri

Estoy tratando de enviar un correo electrónico con python, pero sigue diciendo ssl.SSLError: [SSL: WRONG_VERSION_NUMBER] wrong version number (_ssl.c:1056). Aquí está mi código:

server = smtplib.SMTP_SSL('smtp.mail.com', 587)
server.login("something0@mail.com", "password")
server.sendmail(
"something0@mail.com", 
"something@mail.com", 
"email text")
server.quit()

¿Sabes lo que está mal?

  • Cual es tu sistema operativo, Pitón versión, y OpenSSL ¿versión? Además, si abre el intérprete de comandos, ¿qué significa import ssl, print(ssl.OPENSSL_VERSION) ¿producción?

    – CristiFati

    29 de agosto de 2019 a las 17:40


  • @CristiFati Windows 10 Home, 3.7, OpenSSL 1.1.0j 20 de noviembre de 2018

    – TheRealTengri

    30 de agosto de 2019 a las 5:04

  • está utilizando el puerto incorrecto para SSL 587 es para TLS 465 para SSL

    – Bilal Naqvi

    16 de junio a las 15:02

avatar de usuario de moshevi
moshevi

el puerto para SSL es 465 y no 587, sin embargo, cuando usé SSL el correo llego al correo no deseado.

Para mí lo que funcionó fue usar TLS sobre regular SMTP en lugar de SMTP_SSL.

Tenga en cuenta que este es un método seguro como TLS es también un protocolo criptográfico (como SSL).

import smtplib, ssl

port = 587  # For starttls
smtp_server = "smtp.gmail.com"
sender_email = "my@gmail.com"
receiver_email = "your@gmail.com"
password = input("Type your password and press enter:")
message = """\
Subject: Hi there

This message is sent from Python."""

context = ssl.create_default_context()
with smtplib.SMTP(smtp_server, port) as server:
    server.ehlo()  # Can be omitted
    server.starttls(context=context)
    server.ehlo()  # Can be omitted
    server.login(sender_email, password)
    server.sendmail(sender_email, receiver_email, message)

proporcionado gracias a la tutorial de python real.

avatar de usuario de oruchkin
Oruchkin

así es como resolví el mismo problema

import ssl


sender = "youremail@yandex.ru"
password = "password123"
    
where_to_email = "reciever@anymail.com"
theme = "this is subject"
message = "this is your message, say hi to reciever"
    
sender_password = password
session = smtplib.SMTP_SSL('smtp.yandex.ru', 465)
session.login(sender, sender_password)
msg = f'From: {sender}\r\nTo: {where_to_email}\r\nContent-Type: text/plain; charset="utf-8"\r\nSubject: {theme}\r\n\r\n'
msg += message
session.sendmail(sender, where_to_email, msg.encode('utf8'))
session.quit()

también si quieres usar yandex correo you must para activar el “código protal” en la configuración.

google ya no te permite desactivar esta función, lo que significa que simplemente no funcionará sin importar lo que hagas, yahoo parece ser de la misma manera

Código para enviar correo electrónico a través de python:

import smtplib , ssl
import getpass
server = smtplib.SMTP_SSL("smtp.gmail.com",465)
server.ehlo()
server.starttls
password = getpass.getpass()   # to hide your password while typing (feels cool)
server.login("example@gmail.com", password)
server.sendmail("example@gmail.com" , "sender-example@gmail.com" , "I am trying out python email through coding")
server.quit()

#desactiva las APLICACIONES MENOS SEGURAS para que esto funcione en tu gmail

¿Ha sido útil esta solución?