Python脚本未显示电子邮件中的所有行

Python脚本未显示电子邮件中的所有行,python,Python,我编写了一个脚本,该脚本将查找目录的所有子文件夹,并将其日期修改值与当前时间戳进行比较。如果超过30分钟,它会给我发电子邮件。如果返回的字符串不止一个,它会向我发送相同数量的电子邮件。如何将所有结果放在一封电子邮件中,而不是将多个子文件夹的多封电子邮件发送给我 现在输出: 电子邮件1: C:\Test\Test:00:30:00 电子邮件2: C:\Test\Test2:00:30:00 电子邮件3: C:\Test\Test3:00:30:00 import os import time

我编写了一个脚本,该脚本将查找目录的所有子文件夹,并将其日期修改值与当前时间戳进行比较。如果超过30分钟,它会给我发电子邮件。如果返回的字符串不止一个,它会向我发送相同数量的电子邮件。如何将所有结果放在一封电子邮件中,而不是将多个子文件夹的多封电子邮件发送给我

现在输出: 电子邮件1: C:\Test\Test:00:30:00 电子邮件2: C:\Test\Test2:00:30:00 电子邮件3: C:\Test\Test3:00:30:00

 import os
 import time
 import sys
 from datetime import date
 from datetime import datetime
 from datetime import timedelta
 import win32com.client as win32

 print("There are folders inside GOXSA2016 for longer than 30 minutes. Please 
 login to server and 
 check for errors. See duration time periods below")
 for root, folders, files in os.walk('N:\OCRFF\import'):
     for name in folders:
         datetimeFormat = '%Y-%m-%d %H:%M:%S.%f'
         filedate = datetime.fromtimestamp(os.path.getmtime(os.path.join(root, 
         name)))
         now_time = datetime.now()
         now_time = str(now_time)
         filedate = str(filedate)
         now_time = datetime.strptime(now_time, datetimeFormat)
         filedate = datetime.strptime(filedate, datetimeFormat)
         difference = now_time-filedate
         if difference > timedelta(seconds=1) and os.path.join(root, name)=='N:\\OCRFF\\import':
             break
         if difference > timedelta(seconds=1):
             file_times = os.path.join("\\\Test\Test2" + root.strip("N:"), name),": 
         ",str(difference)
             file_times_final = file_times[0] + file_times[1] + file_times[2]

             outlook = win32.Dispatch('outlook.application')
             mail = outlook.CreateItem(0)
             mail.To = 'test@test.com'
             mail.Subject = '**CORRESPONDENCE ALERT**'

             mail.HTMLBody = f"""
                        There are folders inside that arelonger than 30 
             minutes. Please login to server and 
                        check for errors. See duration time period below for 
             the folder path.<br/><br/>"""

             mail.HTMLBody = mail.HTMLBody + file_times_final + """<br/>"""
             mail.HTMLBody = mail.HTMLBody + '''<br /><br /> Thank You, <br /> 
                 Payment 
             Processing Center<br />'''

             mail.Send()
预期产出: 一封电子邮件: C:\Test\Test:00:30:00 C:\Test\Test2:00:30:00 C:\Test\Test3:00:30:00

 import os
 import time
 import sys
 from datetime import date
 from datetime import datetime
 from datetime import timedelta
 import win32com.client as win32

 print("There are folders inside GOXSA2016 for longer than 30 minutes. Please 
 login to server and 
 check for errors. See duration time periods below")
 for root, folders, files in os.walk('N:\OCRFF\import'):
     for name in folders:
         datetimeFormat = '%Y-%m-%d %H:%M:%S.%f'
         filedate = datetime.fromtimestamp(os.path.getmtime(os.path.join(root, 
         name)))
         now_time = datetime.now()
         now_time = str(now_time)
         filedate = str(filedate)
         now_time = datetime.strptime(now_time, datetimeFormat)
         filedate = datetime.strptime(filedate, datetimeFormat)
         difference = now_time-filedate
         if difference > timedelta(seconds=1) and os.path.join(root, name)=='N:\\OCRFF\\import':
             break
         if difference > timedelta(seconds=1):
             file_times = os.path.join("\\\Test\Test2" + root.strip("N:"), name),": 
         ",str(difference)
             file_times_final = file_times[0] + file_times[1] + file_times[2]

             outlook = win32.Dispatch('outlook.application')
             mail = outlook.CreateItem(0)
             mail.To = 'test@test.com'
             mail.Subject = '**CORRESPONDENCE ALERT**'

             mail.HTMLBody = f"""
                        There are folders inside that arelonger than 30 
             minutes. Please login to server and 
                        check for errors. See duration time period below for 
             the folder path.<br/><br/>"""

             mail.HTMLBody = mail.HTMLBody + file_times_final + """<br/>"""
             mail.HTMLBody = mail.HTMLBody + '''<br /><br /> Thank You, <br /> 
                 Payment 
             Processing Center<br />'''

             mail.Send()
导入操作系统
导入时间
导入系统
起始日期时间导入日期
从日期时间导入日期时间
从日期时间导入时间增量
将win32com.client作为win32导入
打印(“GOXSA2016中有文件夹超过30分钟。请
登录到服务器并
检查错误。请参阅下面的“持续时间”
对于os.walk('N:\OCRFF\import')中的根目录、文件夹和文件:
对于文件夹中的名称:
datetimeFormat='%Y-%m-%d%H:%m:%S.%f'
filedate=datetime.fromtimestamp(os.path.getmtime)(os.path.join(root、,
(姓名)
now_time=datetime.now()
now_time=str(now_time)
filedate=str(filedate)
now_time=datetime.strtime(now_time,datetimeFormat)
filedate=datetime.strtime(filedate,datetimeFormat)
差异=现在\u时间文件日期
如果差异>时间增量(秒=1)和os.path.join(根,名称)='N:\\OCRFF\\import':
打破
如果差异>时间增量(秒=1):
file\u times=os.path.join(\\\Test\Test2“+root.strip(“N:”),name),“:
“,str(差异)
文件次数最终=文件次数[0]+文件次数[1]+文件次数[2]
outlook=win32.Dispatch('outlook.application')
mail=outlook.CreateItem(0)
邮寄至test@test.com'
mail.Subject='**通信警报**'
mail.HTMLBody=f“”
里面有超过30个的文件夹
分钟。请登录服务器并
检查错误。有关详细信息,请参阅下面的持续时间
文件夹路径。

“ mail.HTMLBody=mail.HTMLBody+file\u times\u final+“”“
” mail.HTMLBody=mail.HTMLBody+'''

谢谢,
付款 处理中心
“ mail.Send()
有很多方法可以做到这一点。一个简单的方法是,将file_times_做成一个最终列表并附加到其中,然后像建议的那样在循环之外发送一封电子邮件

导入后添加
file\u times\u final=[]
这是一个空列表声明。您可以使用list.append(输入)在列表中存储任何内容

因此,不要使用
file\u times\u final=file\u times[0]+file\u times[1]+file\u times[2]
来实现它
file\u times\u final.append(file\u times[0]+file\u times[1]+file\u times[2])
这只是说每次循环命中时都将这些次数追加到列表中


然后将你的电子邮件代码从循环中取出,结果应该是一个逗号分隔的列表,周围有括号
[]
。您可以使用输出格式。

您的邮件发送代码在循环中。先收集所有结果,然后再发送邮件。@usr2564301如果我将其从循环中删除,它将只发送一封只有一行的电子邮件。如果我把它放回for循环,我会得到我所有的行,但在不同的电子邮件中。