File "m.py", line 60, in echo_meage mail_content = text NameError: name 'text' is not defined

from aiogram import Bot, types
from aiogram.dispatcher import Dispatcher
from aiogram.utils import executor
from aiogram.types import ReplyKeyboardMarkup, KeyboardButton, InlineKeyboardButton
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from config import TOKEN
from aiogram.dispatcher.filters import Command, Text


bot = Bot(token=TOKEN)
dp = Dispatcher(bot)




button_hi = KeyboardButton('запросить домашнее задания')
button_h = KeyboardButton('создатель')
button_h2 = KeyboardButton('изменить дз')
button_h3 = KeyboardButton('зделать масовую отрпавку сообщений')

greet_kb = ReplyKeyboardMarkup()
greet = ReplyKeyboardMarkup()
greeta = ReplyKeyboardMarkup()
greet_kb.add(button_hi, button_h)
greet.add(button_h2)
greeta.add(button_h2,button_h3)
dd = "ааааа я не понимаю("
goodd = "шестиклашка по имени Влад"
d = ""
goos = "все гуд напишите /main чтоб начать пользиваться ботом"
goo = "а напомника свою почту)?"


bot = Bot(token=TOKEN)
dp = Dispatcher(bot)

@dp.message_handler(commands=['start'])
async def process_start_command(message: types.Message):
    await message.reply("привет! напиши свою GMAIL почту чтоб я мог отправлять домашнее задания или уведомления")
    @dp.message_handler()
    async def echo_message(msg: types.Message):
        await bot.send_message(msg.from_user.id, goos)
        mail = msg.text         
        f = open('bazemail.txt', 'a')
        f.write(mail + "\n")
@dp.message_handler(commands=['main'])
async def process_start_command(message: types.Message):
    await message.reply("Привет!", reply_markup=greet_kb)
    mail = ""
    async def askow_r_u(message: types.Message):введите сюда код
        await bot.send_message(msg.from_user.id)
        mail = msg.text 

    @dp.message_handler(Text(equals=["запросить домашнее задания"]))
    async def echo_meage(msg: types.Message):
        await bot.send_message(msg.from_user.id, goo)
        global text
        mail_content = text
        #The mail addresses and password
        sender_address = 'xxxx'
        sender_pass = 'xxxxxx'
        receiver_address = mail
        #Setup the MIME
        message = MIMEMultipart()
        message['From'] = sender_address
        message['To'] = receiver_address
        message['Subject'] = 'home work'   #The subject line
        #The body and the attachments for the mail
        message.attach(MIMEText(mail_content, 'plain'))
        #Create SMTP session for sending the mail
        session = smtplib.SMTP('smtp.gmail.com', 587) #use gmail with port
        session.starttls() #enable security
        session.login(sender_address, sender_pass) #login with mail_id and password
        text = message.as_string()
        session.sendmail(sender_address, receiver_address, text)
        session.quit()
        await bot.send_message(msg.from_user.id, "отправил")
    @dp.message_handler(Text(equals=["создатель"]))
    async def echo_eage(msg: types.Message):
        await bot.send_message(msg.from_user.id, goodd)

@dp.message_handler(commands=['vladsecret'])
async def procrt_command(message: types.Message):
    await message.reply("admin has been created", reply_markup=greet)
    @dp.message_handler(Text(equals=["изменить дз"]))
    async def echo_meage(msg: types.Message):
        text = msg.text

if __name__ == '__main__':
    executor.start_polling(dp)

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

Автор решения: CrazyElf
global text
mail_content = text

Вы пытаетесь тут читать значение глобальной переменной text, которая ранее не была инициализирована.

Судя по коду, не очень понятно, что вы делаете и я не уверен, что вы понимаете, что вы делаете, поэтому тут трудно советовать, как этот код починить правильным образом.

→ Ссылка