Как отправить письмо нескольким получателям 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()