Sending email using Outlook SMTP
Asked Answered
S

4

7

I want to send email in Django application using Outlook's SMTP server. The problem is, I get SSL wrong version number error every time I'm trying to send a message.

Error traceback:

Traceback (most recent call last):
File "F:\Development\Python\lib\smtplib.py", line 366, in getreply
    line = self.file.readline()
File "F:\Development\Python\lib\socket.py", line 297, in readinto
    return self._sock.recv_into(b)
File "F:\Development\Python\lib\ssl.py", line 453, in recv_into
    return self.read(nbytes, buffer)
File "F:\Development\Python\lib\ssl.py", line 327, in read
    v = self._sslobj.read(len, buffer)
ssl.SSLError: [SSL: WRONG_VERSION_NUMBER] wrong version number (_ssl.c:1450)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "F:\Development\Python\lib\site-packages\django\core\handlers\base.py", line 115,   in get_response
    response = callback(request, *callback_args, **callback_kwargs)
File "E:\SkyDrive\Repositories\web\skyproject\views.py", line 13, in index
    email.send()
File "F:\Development\Python\lib\site-packages\django\core\mail\message.py", line 255, in send
    return self.get_connection(fail_silently).send_messages([self])
File "F:\Development\Python\lib\site-packages\django\core\mail\backends\smtp.py", line 88, in send_messages
    new_conn_created = self.open()
File "F:\Development\Python\lib\site-packages\django\core\mail\backends\smtp.py", line 55, in open
    self.connection.login(self.username, self.password)
File "F:\Development\Python\lib\smtplib.py", line 621, in login
    AUTH_PLAIN + " " + encode_plain(user, password))
File "F:\Development\Python\lib\smtplib.py", line 398, in docmd
    return self.getreply()
File "F:\Development\Python\lib\smtplib.py", line 370, in getreply
+ str(e))

smtplib.SMTPServerDisconnected: Connection unexpectedly closed: [SSL: WRONG_VERSION_NUMBER] wrong version number (_ssl.c:1450)

This is my SMTP configuration in 'settings.py':

EMAIL_USE_TLS = True
EMAIL_HOST = 'smtp.live.com'
EMAIL_HOST_USER = '[email protected]'
EMAIL_HOST_PASSWORD = 'my_password'
EMAIL_PORT = 587

And this is how messages being sent:

from django.core.mail import EmailMessage
email = EmailMessage('Test', 'Test', to=['[email protected]'])
email.send()

I have no idea why I get this error. As far as I know, there are no SSL_VERSION parameter in Django settings.

If it is important, my interpreter's version is 3.3.2, and Django's version is 1.5.2.

Sagesagebrush answered 14/8, 2013 at 7:8 Comment(2)
Did you ever fix this?Lutist
No, I haven't fixed that yet.Sagesagebrush
R
5

Try these settings for OutLook:

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_PORT = 587
EMAIL_USE_TLS = True
EMAIL_HOST = 'smtp-mail.outlook.com'
EMAIL_HOST_USER = "[email protected]"
EMAIL_HOST_PASSWORD = "yourpassword"
Reparable answered 17/3, 2021 at 11:46 Comment(1)
It works in Django 3.2.16Choir
L
2

I got it working with the following settings:

EMAIL_USE_TLS = True
EMAIL_HOST = 'smtp-mail.outlook.com'
EMAIL_HOST_USER = '[email protected]'
EMAIL_HOST_PASSWORD = 'mypassword'
EMAIL_PORT = 25
Lucaslucca answered 11/10, 2013 at 21:39 Comment(0)
S
2

I had a very similar issue. I was getting following error message:

SMTPServerDisconnected: Connection unexpectedly closed

The solution was to:

  1. Login to the e-mail address via web interface available at www.outlook.com
  2. Verify my account by providing MS with my phone number and typing back the received SMS.

After this I can nicely send e-mails from Django.

Satisfy answered 24/2, 2014 at 20:40 Comment(0)
L
0

Due to the cancellation of Gmail's less secure apps, I tried outlook. Here is the code:

# setting.py
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_PORT = 587
EMAIL_USE_TLS = True
EMAIL_HOST = 'smtp-mail.outlook.com'
EMAIL_HOST_USER = "[email protected]"
EMAIL_HOST_PASSWORD = "password"

You could test it in shell:

python manage.py shell

>>> from django.core.mail import send_mail
>>> send_mail("TEST","THis is a test","[email protected]",["[email protected]"],fail_silently=False)

Lite answered 15/1, 2023 at 15:43 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.