Как отправить письмо нескольким получателям python

Мне нужно отправить одно письмо с одного адреса на два других. Пробовал этот способ: https://qastack.ru/programming/8856117/how-to-send-email-to-multiple-recipients-using-python-smtplib Не работает, есть какие нибудь другие способы? Вот код:

import smtplib
from email import encoders
from email.mime.base import MIMEBase
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
import mysql.connector
from mysql.connector import errorcode
import telebot
import datetime
import os
import sys

try:
    db = mysql.connector.connect(
        host="localhost",
        user="root",
        passwd="18273645Ee",
        port="3306",
        database="service"
    )
except mysql.connector.Error as err:
    if err.errno == errorcode.ER_ACCESS_DENIED_ERROR:
        print("Что-то не так с вашим именем пользователя или паролем")
        sys.exit()
    elif err.errno == errorcode.ER_BAD_DB_ERROR:
        print("База данных не существует")
        sys.exit()
    else:
        print(err)
        sys.exit()

cursor = db.cursor()

cursor.execute("CREATE DATABASE IF NOT EXISTS service")

cursor.execute("CREATE TABLE IF NOT EXISTS KSH_vigorodka_service (id INT AUTO_INCREMENT PRIMARY KEY, \
BC VARCHAR(255), remedy VARCHAR(255), dir VARCHAR(255))")

service_data = {}
service_data_photo = {}
photo_name = {'photo1': '1_сжатие', 'photo2': '2_сжатие', 'photo3': '3_сжатие', 'photo4': '4_сжатие'}

bot = telebot.TeleBot('1638316553:AAHnVsjq1WYWorkxiYGOPU_8UgL1msCigtY')
service_data = {}

@bot.message_handler(commands=['start'])
def send_welcome(message):
    global path, a, b
    a = 0
    b = 0
    now = datetime.datetime.now()
    time = now.strftime("%d-%m-%Y %H_%M_%S")
    path = f'C:/Users/kiber/PycharmProjects/tg_for_papa/photos/TO{time}/'

    try:
        os.mkdir(path)
    except Exception as e:
        print('esd')
    msg = bot.send_message(message.chat.id, "Введи Название объекта")
    bot.register_next_step_handler(msg, process_name_step)


def process_name_step(message):
    try:
        service_data.update({'name': message.text})
        if message.text == '/restart':
            send_welcome(message)
        msg = bot.send_message(message.chat.id, "Введите № работы в remedy(последние 6 цифр)")
        bot.register_next_step_handler(msg, process_remedy_step)
    except Exception as e:
        bot.reply_to(message, 'oooops')

def process_remedy_step(message):
    try:
        service_data.update({'remedy': message.text})
        if message.text == '/restart':
            send_welcome(message)
        msg = bot.send_message(message.chat.id, "Сделайте фото журнала учета - титульный лист")
        bot.register_next_step_handler(msg, process_magazine_step)
    except Exception as e:
        bot.reply_to(message, 'oooops')

def process_magazine_step(message):
    try:
        if message.content_type == 'photo':
            photo = message.photo[-1].file_id
            file_photo = bot.get_file(photo)
            filename, file_extension = os.path.splitext(file_photo.file_path)

            downloaded_file_photo = bot.download_file(file_photo.file_path)

            src1 = path + 'photo0' + file_extension
            with open(src1, 'wb') as new_file:
                new_file.write(downloaded_file_photo)
                print(photo)

            msg = bot.send_message(message.chat.id, '''ddd''')
            bot.register_next_step_handler(msg, process_photo_step)
        elif message.text == '/restart':
            send_welcome(message)
        else:
            bot.reply_to(message, 'Это не фотография, пришлите пожалуйста фото.')
            process_remedy_step(message)
    except Exception as e:
        bot.reply_to(message, 'oooops')

def process_photo_step(message):
    global a
    if message.content_type == 'photo':
        a += 1
        number_as_string = str(a)
        photo = message.photo[-1].file_id
        file_photo = bot.get_file(photo)
        filename, file_extension = os.path.splitext(file_photo.file_path)

        downloaded_file_photo = bot.download_file(file_photo.file_path)

        src1 = path + 'photo' + number_as_string + file_extension
        with open(src1, 'wb') as new_file:
            new_file.write(downloaded_file_photo)
            print(photo)
            msg = bot.send_message(message.chat.id, 'Спасибо за фотографию пришлите еще фотографии или нажмите 1')
            bot.register_next_step_handler(msg, process_photo_step)
    else:
        process_description_step(message)
def process_description_step(message):
    try:
        # Регистрация заявки
        sql = "INSERT INTO KSH_vigorodka_service (BC, remedy, dir) \
                                  VALUES (%s, %s, %s)"
        val = (service_data['name'],  service_data['number_of_work'], path)
        cursor.execute(sql, val)
        db.commit()

        addr_from = "[email protected]"
        addr_to = "[email protected]"
        addr_to2 = "[email protected]"
        addr_to = ['[email protected]', '[email protected]']
        password = "jsqmgrunweufgaox"  # пароль от почты addr_from

        msg = MIMEMultipart()  # Создаем сообщение
        msg['From'] = addr_from  # Адресат
        msg['To'] = addr_to  # Получатель
        msg['Subject'] = service_data['number_of_work']

        a = 'Название:' + service_data['name'] + ' Номер работы: ' + service_data['number_of_work'] + ' Путь к папке: '+ path
        msg.attach(MIMEText(a, 'plain'))


        for filename in os.listdir(path):
            foldername = path + "" + filename
            attachment = open(foldername, "rb")

            # экземпляр MIMEBase с именем p

            p = MIMEBase('application', 'octet-stream')

            # Чтобы изменить полезную нагрузку в закодированную форму
            p.set_payload((attachment).read())

            # кодировать в base64
            encoders.encode_base64(p)

            p.add_header('Content-Disposition', "attachment; filename= %s" % path)
            # присоединить экземпляр 'p' к экземпляру 'msg'
            msg.attach(p)
            print(foldername)

        server = smtplib.SMTP_SSL('smtp.yandex.ru', 465)  # Создаем объект SMTP
        # server.starttls()             # Начинаем шифрованный обмен по TLS
        server.login(addr_from, password)  # Получаем доступ
        server.send_message(msg)  # Отправляем сообщение
        server.quit()  # Выходим

        bot.send_message(message.chat.id, "Вы успешно завершили!")

    except Exception as e:
        pass


bot.polling()


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