如何解决下载电子邮件附件后停止while循环 - python
我有以下 python 代码,可以从 Outlook 收件箱、COC 子文件夹下载附件。代码运行良好,但在下载所有附件后不会停止。请问我该如何解决。
import win32com.client
import os
outlook = win32com.client.Dispatch("Outlook.Application").GetNamespace("MAPI")
inbox=outlook.GetDefaultFolder(6).folders("COC") # "6" refers to the index of a folder - in this case the inbox. You can change that number to reference
messages = inbox.Items
message = messages.GetFirst()
while True:
try:
print (message)
attachments = message.Attachments
attachment = attachments.Item(1)
attachment.SaveASFile(os.getcwd() + '\\' + str(attachment)) #Saves to the attachment to current folder
print (attachment)
message = messages.GetNext()
except:
message = messages.GetNext()
解决方法
用for循环代替while循环
for message in messages:
try:
attachments = message.Attachments
attachment = attachments.Item(1)
attachment.SaveASFile(os.getcwd() + '\\' + str(attachment)) #Saves to the attachment to current folder
print(attachment)
print(message)
except:
pass
,
只要条件保持为真,while 循环就会永远运行下去。只需增加循环以确保它在最后变为假。 例如,您可以在 while 循环上方设置一个变量状态并将其设置为 true ..... while 循环的条件可以是 while status == true。 在循环结束时重新声明状态为 == false
,当 $cvendordata = new commvendordata;
$new_date = $request->new_date;
$ccode = $request->ccode;
$cname = $request->cname;
$cunit = $request->cunit;
$vender1 = $request->vendor1;
$vender2 = $request->vendor2;
$vender3 = $request->vendor3;
$vender4 = $request->vendor4;
for($i=0; $i<count($ccode); $i++) {
$commdata = [
'new_date' => $new_date,'cd_id' => $ccode[$i],'cn_id' => $cname[$i],'unit_id' => $cunit[$i],'vender1' => $vender1[$i],'vender2' => $vender2[$i],'vender3' => $vender3[$i],'vender4' => $vender4[$i]
];
DB::table('commvendordata')->insert($commdata);
}
Session::put('Success',"Save Data Successfully...!");
return back();
方法指示没有更多消息时,您可以更改条件以使用该条件而不是 message.GetNext()
,或者(如有必要)使用 True
语句来退出循环。
附带说明,使用 break
/try
来忽略所有错误并不是一个好主意;您应该只忽略您知道没有问题的特定错误。
确切的代码取决于 except
如何指示没有更多消息,您可以在文档中查找或尝试查看;但是,假设它返回 message.GetNext()
,代码将如下所示:
None
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。