Как использовать пароль для приложения во flask?
Есть небольшое приложение, которое отправляет контакт-форму с сайта на почту. Написано на flask. Запрос от формы принимает, но отправить письмо на почту не может, так как проваливает аутентификацию. Я сгенерировал пароль для приложения в zoho и вставил его в конфиг, оставив ящик почты неизменным. Приложение все равно провалило аутентификацию.
Код придложения
from flask import Flask, request
import smtplib
from email.message import EmailMessage
import json
import logging
from flask_cors import CORS
app = Flask(__name__)
cors = CORS(app)
logging.basicConfig(filename='feedback.log', level=logging.DEBUG)
with open('config.json', 'r') as f:
config = json.load(f)
smtp_host = config['smtp_host']
smtp_port = config['smtp_port']
smtp_username = config['smtp_username']
smtp_password = config['smtp_password']
to_address = config['to_address']
@app.route('/feedback', methods=['POST'])
def receive_feedback():
# Extract data from the JSON payload
data = request.json
logging.info(f'Received feedback data: {data}')
firstname = data['firstname']
lastname = data['lastname']
email = data['email']
subject = data['subject']
message = data['message']
# Compose email message
msg = EmailMessage()
msg.set_content(f"First Name: {firstname}\nLast Name: {lastname}\nEmail: {email}\nSubject: {subject}\nMessage: {message}")
msg['Subject'] = "Feedback form submission"
msg['From'] = email
msg['To'] = to_address
# Send email using SMTP server
try:
with smtplib.SMTP(smtp_host, smtp_port) as smtp:
smtp.starttls()
smtp.login(smtp_username, smtp_password)
smtp.send_message(msg)
logging.info(f'Sent feedback email to {msg["To"]}')
return "Thank you for your feedback!"
except Exception as e:
logging.error(f'Failed to send feedback email: {e}')
return "An error occurred while sending your feedback."
if __name__ == '__main__':
app.run()
В конфиге:
{
"smtp_host": "smtp.zoho.eu",
"smtp_port": 587,
"smtp_username": "[email protected]",
"smtp_password": "app_password",
"to_address": "[email protected]"
}
В логах:
ERROR:root:Failed to send feedback email: (535, b'Authentication Failed')
INFO:werkzeug:127.0.0.1 - - [29/Mar/2023 08:12:29] "POST /feedback HTTP/1.1" 200 -
Такая же ошибка возникает если ввести пароль от аккаунта. Как пройти аутетификацию?