python автоматическая электронная почта для нескольких человек, почему электронная почта была отправлена ​​только одному человеку - PullRequest
0 голосов
/ 04 мая 2020
        def mail():

            import os

            import pandas as pd

            import smtplib

            from email.mime.base import MIMEBase

            from email.mime.text import MIMEText

            from email.utils import formatdate

            from email.mime.multipart import MIMEMultipart

            from email import encoders

            from PyQt5.QtCore import QDate, Qt

            path = 'C:/Users/user/Desktop/pdf/'

            contact = 'con1.xlsx'

            df = pd.read_excel(str(path)+contact, endcoding ='utf8')

            df.set_index('unyong', inplace = True)

            now = QDate.currentDate()

            filenm = [f for f in os.listdir(path) if f.endswith('.pdf')]

            unyong_nm = []



            for w in filenm:

                a = w.find('_')

                b = w.rfind('_')

                unyong_nm.append(w[a+1:b])

            unyong_nm = list(set(unyong_nm))



            for i in range(0,len(unyong_nm)):



                send_from = 'ss@ddd'

                recipients = df.loc[unyong_nm[i],'email']

                send_to = ",".join(recipients)

                attach = [s for s in filenm if s.find(unyong_nm[i]) >-1 ]

                username = 'sss@ssss'

                password = 'sss'

                subject = ('111'+now.toString('yyyy.MM')+'_'+unyong_nm[i]+str(i+1))

                text = ('hi')





                msg = MIMEMultipart()

                msg['From'] = send_from

                msg['To']= send_to

                msg['Subject'] = subject

                msg['Date']=formatdate(localtime=True)





                filename_match = [s for s in filenm if s.find(unyong_nm[i]) >-1 ]



                for file in filename_match:

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

                    part.set_payload(open(str(path)+file, 'rb').read())

                    encoders.encode_base64(part)

                    part.add_header('Content-Disposition','attachment', filename =file)

                    msg.attach(part)

                    msg.attach(MIMEText(text))

             mailServer = smtplib.SMTP("smtp.sssss.com", 587)

             mailServer.ehlo()

             mailServer.starttls()

             mailServer.ehlo()

             mailServer.login(username,password)

             mailServer.sendmail(send_from, send_to, msg.as_string())

             mailServer.close()

CF) путь к файлам: ['2221_sss_love.pdf', '2221_sss_happy.pdf', '2221_ddd_sad.pdf', '2221_ddd_lucky.pdf', 'con1.xlsx']

результат unyong_nm = ['sss', 'ddd'] filenm = ['2221_sss_love.pdf', '2221_sss_happy.pdf', '2221_ddd_sad.pdf', '2221_ddd_lucky.pdf']

con1.xls содержание sss 111@aaa <- success sss 777@bbb <-fail ddd 666@sss <- success ddd почему электронная почта отправляется только в первую строку. Я также отклоняю строку формы: mailServer = smtplib.SMTP ("smtp.sssss .com ", 587) </p>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...