Как использовать пароль для приложения во 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 -

Такая же ошибка возникает если ввести пароль от аккаунта. Как пройти аутетификацию?


Ответы (0 шт):