How to fix ssl.SSLError: [SSL: WRONG_VERSION_NUMBER] wrong version number (_ssl.c:1056)?
Question:
I am trying to send an email with python, but it keeps saying ssl.SSLError: [SSL: WRONG_VERSION_NUMBER] wrong version number (_ssl.c:1056)
. Here is my code:
server = smtplib.SMTP_SSL('smtp.mail.com', 587)
server.login("[email protected]", "password")
server.sendmail(
"[email protected]",
"[email protected]",
"email text")
server.quit()
Do you know what is wrong?
Answers:
The port for SSL
is 465 and not 587, however when I used SSL
the mail arrived to the junk mail.
For me the thing that worked was to use TLS
over regular SMTP
instead of SMTP_SSL
.
Note that this is a secure method as TLS
is also a cryptographic protocol (like SSL).
import smtplib, ssl
port = 587 # For starttls
smtp_server = "smtp.gmail.com"
sender_email = "[email protected]"
receiver_email = "[email protected]"
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)
provided thanks to the real python tutorial.
Code to send email via 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("[email protected]", password)
server.sendmail("[email protected]" , "[email protected]" , "I am trying out python email through coding")
server.quit()
#turn off LESS SECURE APPS to make this work on your gmail
this is how i solved same problem
import ssl
sender = "[email protected]"
password = "password123"
where_to_email = "[email protected]"
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}rnTo: {where_to_email}rnContent-Type: text/plain; charset="utf-8"rnSubject: {theme}rnrn'
msg += message
session.sendmail(sender, where_to_email, msg.encode('utf8'))
session.quit()
also if you want to use yandex
mail you must
to turn on "protal code" in settings.
google no longer lets you turn this feature off, meaning it just wont work no matter what you do, yahoo appears to be the same way
I am trying to send an email with python, but it keeps saying ssl.SSLError: [SSL: WRONG_VERSION_NUMBER] wrong version number (_ssl.c:1056)
. Here is my code:
server = smtplib.SMTP_SSL('smtp.mail.com', 587)
server.login("[email protected]", "password")
server.sendmail(
"[email protected]",
"[email protected]",
"email text")
server.quit()
Do you know what is wrong?
The port for SSL
is 465 and not 587, however when I used SSL
the mail arrived to the junk mail.
For me the thing that worked was to use TLS
over regular SMTP
instead of SMTP_SSL
.
Note that this is a secure method as TLS
is also a cryptographic protocol (like SSL).
import smtplib, ssl
port = 587 # For starttls
smtp_server = "smtp.gmail.com"
sender_email = "[email protected]"
receiver_email = "[email protected]"
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)
provided thanks to the real python tutorial.
Code to send email via 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("[email protected]", password)
server.sendmail("[email protected]" , "[email protected]" , "I am trying out python email through coding")
server.quit()
#turn off LESS SECURE APPS to make this work on your gmail
this is how i solved same problem
import ssl
sender = "[email protected]"
password = "password123"
where_to_email = "[email protected]"
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}rnTo: {where_to_email}rnContent-Type: text/plain; charset="utf-8"rnSubject: {theme}rnrn'
msg += message
session.sendmail(sender, where_to_email, msg.encode('utf8'))
session.quit()
also if you want to use yandex
mail you must
to turn on "protal code" in settings.
google no longer lets you turn this feature off, meaning it just wont work no matter what you do, yahoo appears to be the same way