4

I have been trying to send an email using Flask-mail but I always got about SSL.SSLError: [SSL: WRONG_VERSION_NUMBER] wrong version number (_ssl.c:1076) // Werkzeug Debugger also I using Mailtrap as dummy email server to test my app. I have been trying with different mail clients and always god the same error.

And what I'm trying to do, is that once a new user has registered. Send an email to confirm your account by a token.

<!--
Traceback (most recent call last):
  File "/usr/local/lib/python3.7/site-packages/flask/app.py", line 2463, in __call__
    return self.wsgi_app(environ, start_response)
  File "/usr/local/lib/python3.7/site-packages/flask/app.py", line 2449, in wsgi_app
    response = self.handle_exception(e)
  File "/usr/local/lib/python3.7/site-packages/flask_cors/extension.py", line 161, in wrapped_function
    return cors_after_request(app.make_response(f(*args, **kwargs)))
  File "/usr/local/lib/python3.7/site-packages/flask_restplus/api.py", line 584, in error_router
    return original_handler(e)
  File "/usr/local/lib/python3.7/site-packages/flask/app.py", line 1866, in handle_exception
    reraise(exc_type, exc_value, tb)
  File "/usr/local/lib/python3.7/site-packages/flask/_compat.py", line 38, in reraise
    raise value.with_traceback(tb)
  File "/usr/local/lib/python3.7/site-packages/flask/app.py", line 2446, in wsgi_app
    response = self.full_dispatch_request()
  File "/usr/local/lib/python3.7/site-packages/flask/app.py", line 1951, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/usr/local/lib/python3.7/site-packages/flask_cors/extension.py", line 161, in wrapped_function
    return cors_after_request(app.make_response(f(*args, **kwargs)))
  File "/usr/local/lib/python3.7/site-packages/flask_restplus/api.py", line 584, in error_router
    return original_handler(e)
  File "/usr/local/lib/python3.7/site-packages/flask/app.py", line 1820, in handle_user_exception
    reraise(exc_type, exc_value, tb)
  File "/usr/local/lib/python3.7/site-packages/flask/_compat.py", line 38, in reraise
    raise value.with_traceback(tb)
  File "/usr/local/lib/python3.7/site-packages/flask/app.py", line 1949, in full_dispatch_request
    rv = self.dispatch_request()
  File "/usr/local/lib/python3.7/site-packages/flask/app.py", line 1935, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "/usr/local/lib/python3.7/site-packages/flask_restplus/api.py", line 325, in wrapper
    resp = resource(*args, **kwargs)
  File "/usr/local/lib/python3.7/site-packages/flask/views.py", line 89, in view
    return self.dispatch_request(*args, **kwargs)
  File "/usr/local/lib/python3.7/site-packages/flask_restplus/resource.py", line 44, in dispatch_request
    resp = meth(*args, **kwargs)
  File "/usr/src/app/app/user/controller.py", line 35, in post
    return UseService.register(data)
  File "/usr/src/app/app/user/service.py", line 48, in register
    send_confirmation_email(new_user.email)
  File "/usr/src/app/app/utility/mailutility.py", line 40, in send_confirmation_email
    send_email(to, "Test server - confirm your registration", html)
  File "/usr/src/app/app/utility/mailutility.py", line 32, in send_email
    mail.send(message)
  File "/usr/local/lib/python3.7/site-packages/flask_mail.py", line 491, in send
    with self.connect() as connection:
  File "/usr/local/lib/python3.7/site-packages/flask_mail.py", line 144, in __enter__
    self.host = self.configure_host()
  File "/usr/local/lib/python3.7/site-packages/flask_mail.py", line 156, in configure_host
    host = smtplib.SMTP_SSL(self.mail.server, self.mail.port)
  File "/usr/local/lib/python3.7/smtplib.py", line 1031, in __init__
    source_address)
  File "/usr/local/lib/python3.7/smtplib.py", line 251, in __init__
    (code, msg) = self.connect(host, port)
  File "/usr/local/lib/python3.7/smtplib.py", line 336, in connect
    self.sock = self._get_socket(host, port, self.timeout)
  File "/usr/local/lib/python3.7/smtplib.py", line 1039, in _get_socket
    server_hostname=self._host)
  File "/usr/local/lib/python3.7/ssl.py", line 423, in wrap_socket
    session=session
  File "/usr/local/lib/python3.7/ssl.py", line 870, in _create
    self.do_handshake()
  File "/usr/local/lib/python3.7/ssl.py", line 1139, in do_handshake
    self._sslobj.do_handshake()
ssl.SSLError: [SSL: WRONG_VERSION_NUMBER] wrong version number (_ssl.c:1076)

My env file

MAIL_SERVER=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=mail_username
MAIL_PASSWORD=mail_password
MAIL_USE_TLS=True
MAIL_USE_SSL=False
MAIL_DEFAULT_SENDER=username@mail.com

Code

# !/usr/bin/python
# -*- coding: utf-8 -*-
from itsdangerous import URLSafeTimedSerializer
from flask_mail import Message
from flask import url_for, render_template
from flask import current_app as app
from app import mail
def generate_confirmation_token(email):
    serializer = URLSafeTimedSerializer(app.config.get("SECRET_KEY"))
    return serializer.dumps(email, salt=app.config.get("SECURITY_PASSWORD_SALT"))
def confirm__token(token, expiration=3000):
    serializer = URLSafeTimedSerializer(app.config.get("SECRET_KEY"))
    try:
        email = serializer.loads(
            token,
            salt=app.congit.get("SECURITY_PASSWORD_SALT"),
            max_age=expiration
        )
    except:  # noqa
        return False
    return email
def send_email(to, subject, template):
    """ Send an email """
    message = Message(subject, recipients=[to], html=template, sender=app.config.get("MAIL_DEFAULT_SENDER"))
    mail.send(message)
def send_confirmation_email(to):
    """Send a confirmation email to the registered user."""
    token = generate_confirmation_token(to)
    confirm_url = url_for("user_user_confirmation_mail", token=token, _external=True)
    html = render_template('confirmation.html', confirm_url=confirm_url)
    send_email(to, "Test server - confirm your registration", html)

I don't if that could make sense, but use docker to run my app

1 Answers1

0

In my config file, I have only MAIL_USE_TLS=True and no MAIL_USE_SSL. When I had MAIL_USE_TLS and MAIL_USE_SSL set to true, I got the same error as you. So maybe this can help if you still have the problem.

clemsciences
  • 121
  • 9