Необходимо вложить файл для отправки через email
Задача: через цикл пройтись по файлам в папке, и через название отправить файлы выбраным адрессатам.
Прописал логику, но когда необходимо вложить файл через (with open as) и далее msg.add_attachment, получаю ошибку Process finished with exit code -1073740791 (0xC0000409). Читал про ошибку, но не пойму, что не так делаю. Подскажите, пожалуйста.
from PyQt5 import uic
from PyQt5.QtWidgets import QApplication
import smtplib
import os
from email.message import EmailMessage
from re import search
import openpyxl
Form, Window = uic.loadUiType('MailSender.ui')
app = QApplication([])
window = Window()
form = Form()
form.setupUi(window)
window.show()
def filter_recipient_attachments():
wb = openpyxl.reader.excel.load_workbook(filename='recipients.xlsx')
wb.active = 0
sheet = wb.active
path = ('D:\\Qt_projects\\mail_sender\\Attachments\\')
att = os.listdir(path)
for p in att:
for l in range(2, 20):
if p.split('_')[1] == sheet['B' + str(l)].value.lower():
user = form.f_email_id.text() # считываем email_id
password = form.f_email_password.text() # считываем email_password
server = form.f_ssl.text() # считываем ssl
port = form.f_port.text() # считываем port
recipient = form.f_whom.text() # считываем кому(единичная отправка)
folder_rec = form.f_recipients.text() # считываем папку з адресатами:
folder_att = form.f_attachments.text() # считываем папку з вложениями:
subject = form.f_subject.text() # считываем заголовок:
body = form.f_body.text() # считываем текст письма:
print(f'{p}-1')
msg = EmailMessage()
msg['Subject'] = subject
msg['From'] = user
msg['To'] = sheet['A' + str(l)].value
msg.set_content(body)
print(f'{p}-2')
with open(p, 'rb') as f:
file_data = f.read()
file_name = f.name()
msg.add_attachment(file_data, maintype='application', subtype='octet-stream', filename=file_name)
print(print(f'{p}-3'))
with smtplib.SMTP_SSL(server, port) as smtp:
smtp.login(user, password)
smtp.send_message(msg)
print(f'Email sent to {sheet["A" + str(l)].value}')
form.but_connect.clicked.connect(filter_recipient_attachments)
app.exec_()
В конце получаю следующий результат:
_fae_.xlsx-1
_fae_.xlsx-2
Process finished with exit code -1073740791 (0xC0000409)