Не отправляется контактная форма Flask Python
Я совсем новичок. Делаю сайт в качестве последнего проекта к курсу CS50. Сижу вторую неделю над контактной формой. Форма выдает алерты если что-то не так заполнено, если поменять mail.send(msg) на print(msg), то все введенные данные печатает в том виде, в котором должен прийти майл. smtp пробовала с данными gmail, ukr.net и strato, где будет размещен сайт. Проблема в том, что на почту майл не отправляется никак. Запускается код на CS50 IDE cloud9. В хроме уже разрешила все что можно.
application.py
import os
from flask import Flask, render_template, request
from forms import ContactForm
from flask_mail import Mail, Message
from werkzeug.exceptions import default_exceptions, HTTPException, InternalServerError
import sentry_sdk
from sentry_sdk.integrations.flask import FlaskIntegration
sentry_sdk.init(
dsn="https://[email protected]/2831960",
integrations=[FlaskIntegration()]
)
# Configure application
app = Flask(__name__)
MAIL_DEBUG=True
app.config['SECRET_KEY'] = 'you-will-never-guess'
app.config['MAIL_SERVER']='smtp.strato.de'
app.config['MAIL_PORT'] = 465
app.config['MAIL_USERNAME'] = '[email protected]'
app.config['MAIL_PASSWORD'] = '******'
app.config['MAIL_USE_TLS'] = False
app.config['MAIL_USE_SSL'] = True
mail = Mail(app)
@app.route("/")
def index():
return render_template("index.html")
@app.route("/frasen")
def frasen():
return render_template("frasen.html")
@app.route("/drehen")
def drehen():
return render_template("drehen.html")
@app.route("/montage")
def montage():
return render_template("montage.html")
@app.route("/unternehmen")
def unternehmen():
return render_template("unternehmen.html")
@app.route("/daten")
def daten():
return render_template("daten.html")
@app.route("/impressum")
def impressum():
return render_template("impressum.html")
@app.route("/kontakt", methods=["GET", "POST"])
def kontakt():
form = ContactForm()
# User reached route via POST (as by submitting a form via POST)
if request.method == "POST" and form.validate():
msg = Message("Kontaktformular", sender="[email protected]", recipients=["[email protected]"])
msg.body = """
From: %s <%s>
Firma: %s
Tel: %s
Message: %s
""" % (form.name.data, form.email.data, form.firma.data, form.tel.data, form.message.data)
mail.send(msg)
return render_template("success.html")
# User reached route via GET (as by clicking a link or via redirect)
else:
return render_template("kontakt.html", form=form)
def errorhandler(e):
"""Handle error"""
if not isinstance(e, HTTPException):
e = InternalServerError()
return (e.name, e.code)
# Listen for errors
for code in default_exceptions:
app.errorhandler(code)(errorhandler)
if __name__ == "__main__":
app.run(host='0.0.0.0',port=8080)
а это forms.py
from flask_wtf import FlaskForm
from wtforms import BooleanField, StringField, TextAreaField, SubmitField, validators, ValidationError
from wtforms.validators import DataRequired, Email, Length
class ContactForm(FlaskForm):
name = StringField('Ihr Name', [validators.DataRequired()])
firma = StringField('Firma', [validators.DataRequired()])
email = StringField('Ihre E-mail Adresse', [validators.Email(message=('Nicht korrekte E-Mail Adresse.')), DataRequired()])
tel = StringField('Ihre Telefonnummer', [validators.DataRequired()])
message = TextAreaField('Ihre Nachricht', [validators.DataRequired(), Length(min=4, message=('Ihre Nachricht ist zu kurz.'))])
checkbox = BooleanField('Die <a href="/daten">Datenschutzerklärung</a> habe ich gelesen und akzeptiert', [validators.DataRequired()])
submit = SubmitField('Senden')
kontakt.html
{% extends "layout.html" %}
{% block title %}
Contact
{% endblock %}
{% block main %}
<div class="line">
<span class="content">Kontakt</span>
</div>
<div class="container-fluid">
<div class="row justify-content-md-center" style="margin-left:30px;">
<div class="col-sm-6 text-left">
<h2>FIRMA</h2>
<br>
<p>Firma</p>
<p>Adress</p>
<p>CITY</p>
<p>Tel.: 00000</p>
<p>Fax.: 00000</p>
<p><a href="mailto:[email protected]">E-Mail: [email protected]</a></p>
<!--Google map-->
<div id="map-container-google-2" class="z-depth-1-half map-container" style="height: 500px">
<iframe src="https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d2495.0380371972988!2d7.250744915762087!3d51.29202407960038!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x47b9262a21c226cb%3A0xbccbcc317deb5271!2sH%C3%B6lker%20Feld%2016%2C%2042279%20Wuppertal!5e0!3m2!1sru!2sde!4v1580748093156!5m2!1sru!2sde" width="400" height="300" style="border:0;" allowfullscreen="">
</iframe>
</div>
</div>
<div class="col-sm-6 text-left bg-light border">
<h2>KONTAKTFORMULAR</h2>
<form action="" method="POST" enctype=multipart/form-data>
{{ form.hidden_tag() }}
{{ form.name.label }}
{{ form.name }}
{% if form.name.errors %}
<ul class="errors">
{% for error in form.name.errors %}
<li>{{ error }}</li>
{% endfor %}
</ul>
{% endif %}
{{ form.firma.label }}
{{ form.firma }}
{% if form.firma.errors %}
<ul class="errors">
{% for error in form.firma.errors %}
<li>{{ error }}</li>
{% endfor %}
</ul>
{% endif %}
{{ form.email.label }}
{{ form.email }}
{% if form.email.errors %}
<ul class="errors">
{% for error in form.email.errors %}
<li>{{ error }}</li>
{% endfor %}
</ul>
{% endif %}
{{ form.tel.label }}
{{ form.tel }}
{% if form.tel.errors %}
<ul class="errors">
{% for error in form.tel.errors %}
<li>{{ error }}</li>
{% endfor %}
</ul>
{% endif %}
{{ form.message.label }}
{{ form.message }}
{% if form.message.errors %}
<ul class="errors">
{% for error in form.message.errors %}
<li>{{ error }}</li>
{% endfor %}
</ul>
{% endif %}
<p>
{{ form.checkbox.label }}
{{ form.checkbox }}
</p>
<p>{{ form.submit }}</p>
</form>
</div>
</div>
</div>
{% endblock %}
Ошибки как не кручу всегда одинаковые
~/environment/endprojekt/ $ flask run
* Serving Flask app "application.py" (lazy loading)
* Environment: development
* Debug mode: on
* Running on https://29120605-7266-4db9-bec4-ae7fd599d6e6-ide.cs50.xyz:8080/ (Press CTRL+C to quit)
* Restarting with stat
* Debugger is active!
* Debugger PIN: 126-518-079
192.168.239.234 - - [27/Feb/2020 16:15:25] "GET / HTTP/1.0" 200 -
192.168.239.234 - - [27/Feb/2020 16:15:25] "GET /static/styles.css HTTP/1.0" 200 -
192.168.203.175 - - [27/Feb/2020 16:15:25] "GET /static/logo.png HTTP/1.0" 200 -
192.168.203.175 - - [27/Feb/2020 16:15:28] "GET /kontakt HTTP/1.0" 200 -
192.168.203.175 - - [27/Feb/2020 16:15:28] "GET /static/styles.css HTTP/1.0" 200 -
192.168.239.234 - - [27/Feb/2020 16:15:28] "GET /static/logo.png HTTP/1.0" 200 -
192.168.134.245 - - [27/Feb/2020 16:17:48] "POST /kontakt HTTP/1.0" 500 -
Traceback (most recent call last):
File "/home/ubuntu/.local/lib/python3.7/site-packages/sentry_sdk/integrations/flask.py", line 70, in sentry_patched_wsgi_app
environ, start_response
File "/home/ubuntu/.local/lib/python3.7/site-packages/sentry_sdk/integrations/wsgi.py", line 126, in __call__
reraise(*_capture_exception(hub))
File "/home/ubuntu/.local/lib/python3.7/site-packages/sentry_sdk/_compat.py", line 57, in reraise
raise value
File "/home/ubuntu/.local/lib/python3.7/site-packages/sentry_sdk/integrations/wsgi.py", line 122, in __call__
_sentry_start_response, start_response, span
File "/home/ubuntu/.local/lib/python3.7/site-packages/sentry_sdk/integrations/flask.py", line 69, in <lambda>
return SentryWsgiMiddleware(lambda *a, **kw: old_app(self, *a, **kw))(
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/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 39, in reraise
raise value
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/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 39, in reraise
raise value
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 "/home/ubuntu/environment/endprojekt/application.py", line 72, in kontakt
mail.send(msg)
File "/home/ubuntu/.local/lib/python3.7/site-packages/flask_mail.py", line 491, in send
with self.connect() as connection:
File "/home/ubuntu/.local/lib/python3.7/site-packages/flask_mail.py", line 144, in __enter__
self.host = self.configure_host()
File "/home/ubuntu/.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 1037, in _get_socket
self.source_address)
File "/usr/local/lib/python3.7/socket.py", line 728, in create_connection
raise err
File "/usr/local/lib/python3.7/socket.py", line 716, in create_connection
sock.connect(sa)
OSError: [Errno 99] Cannot assign requested address