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?
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.
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
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