@StenMarsh1337

Пользователь отправляет файл боту, а бот кидает на почту gmail?

Ребят, помогите пожалуйста с кодом: 1. Пользователь кидает файл боту 2. Бот Отправляет файл
import telebot
from telebot import types
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.image import MIMEImage
import requests

bot = telebot.TeleBot('v2hO6B0M')

@bot.message_handler(commands=['start'])
def first(message):
    keyboard = types.ReplyKeyboardMarkup(True, False)
    keyboard.add('Меню')
    send = bot.send_message(message.chat.id, "Добро пожаловать, {0.first_name}!\nЯ - <b>{1.first_name}</b>, бот созданный чтобы быть подопытным кроликом.".format(message.from_user, bot.get_me()),
        parse_mode='html', reply_markup=keyboard)
    bot.register_next_step_handler(send, second)


def second(message):
    if message.text == 'Меню':
        keyboard = types.ReplyKeyboardMarkup(True, False)
        keyboard.row('Отправить ', 'Рассчёт ')
        keyboard.add('Обратная связь', 'Помощь')
        send = bot.send_message(message.chat.id, 'Вибери что тебе нужно', reply_markup=keyboard)
        bot.register_next_step_handler(send, third)
    else:
        bot.send_message(message.chat.id, 'Твои данные отправлены, ожидай ответа')
        addr_from = "serhii"  # Адресат
        addr_to = "serhii"  # Получатель
        password = "nvrk"  # Пароль
        msg = MIMEMultipart()  # Создаем сообщение
        msg['From'] = addr_from  # Адресат
        msg['To'] = addr_to  # Получатель
        msg['Subject'] = 'Данные от ЭЦП'  # Тема сообщени
        sms = message.text
        body = sms
        msg.attach(MIMEText(body, 'plain'))  # Добавляем в сообщение текст
        server = smtplib.SMTP('smtp.gmail.com', 587)  # Создаем объект SMTP
        server.set_debuglevel(True)  # Включаем режим отладки - если отчет не нужен, строку можно закомментировать
        server.starttls()  # Начинаем шифрованный обмен по TLS
        server.login(addr_from, password)  # Получаем доступ
        server.send_message(msg)  # Отправляем сообщение
        server.quit()  # Выходим

def third(message):
    if message.text == 'Отправить':
        keyboard = types.ReplyKeyboardMarkup(True, False)
        keyboard.row('Отмена')
        send = bot.send_message(message.chat.id, 'Напиши мне данные в таком формате: ФИО|Пароль от ЭЦП', reply_markup=keyboard)
        bot.register_next_step_handler(send, second)
    elif message.text == 'Отмена':
        first(message)


if __name__ == '__main__':
    bot.infinity_polling()
на почту через SMTP
Тип так 5efc742b60f67641332575.png
  • Вопрос задан
  • 721 просмотр
Решения вопроса 1
@Xander017
Тебе нужно добавить шаг скачивания файла на хостинг.
Алгоритм действий IMHO должен быть следующий:
1. Пользователь кидает файл боту.
2. Бот получает его и хранит файл на сервере telegram.
3. С помощью getFile ты получаешь ссылку на файл, которая валидна 1 час (после этого можно снова ее переполучить).
4. Скачиваешь файл на свой хостинг либо в облако.
5. Создаешь письмо, прикрепляешь файл и отправляешь.
6. После успешной отправки письма файл удаляешь с хостинга.
Done
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы