Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Python从outlook收件箱获取所有电子邮件,并将其保存到本地文件夹中_Python_Loops_Email_Outlook - Fatal编程技术网

使用Python从outlook收件箱获取所有电子邮件,并将其保存到本地文件夹中

使用Python从outlook收件箱获取所有电子邮件,并将其保存到本地文件夹中,python,loops,email,outlook,Python,Loops,Email,Outlook,我想使用Python保存outlook收件箱文件夹中的所有电子邮件。我可以保存第一封或最后一封邮件,但不知道如何获取文件夹中的所有邮件。因此,我尝试使用循环来迭代所有邮件的代码。我已尝试使用以下代码: from win32com.client import Dispatch import os import re os.chdir("D:\\emails") outlook = Dispatch("Outlook.Application").GetNam

我想使用Python保存outlook收件箱文件夹中的所有电子邮件。我可以保存第一封或最后一封邮件,但不知道如何获取文件夹中的所有邮件。因此,我尝试使用循环来迭代所有邮件的代码。我已尝试使用以下代码:

from win32com.client import Dispatch
import os
import re
os.chdir("D:\\emails")

outlook = Dispatch("Outlook.Application").GetNamespace("MAPI")
inbox = outlook.GetDefaultFolder(6)
print(inbox)
messages = inbox.items
message = messages.GetLast()
name = str(message.subject)
name = re.sub('[^A-Za-z0-9]+', '', name)+'.msg'
for message in messages:
   message.SaveAs(os.getcwd()+'//'+name)
这不是给我任何错误,而是只保存最后一封邮件,而不是保存所有邮件。你能帮我更正一下密码吗。谢谢。

问题如下

message = messages.GetLast()
name = str(message.subject)

计算一次名称(在循环之前)并在循环中使用它


您需要在循环过程中计算名称。

完整代码如下所示。。。。(我从巴尔德曼那里得到了这个答案)


@shejomamu上面的评论是干什么的?@shejomamu-它现在能像预期的那样工作吗?如果是-请投票/接受答案。是@balderman,我已经投票支持你的答案。对不起,前面的打字错误。你的建议使我的代码工作得很好。再次感谢。
message.SaveAs(os.getcwd()+'//'+name)
from win32com.client import Dispatch
import os
import re
os.chdir("D:\\email")

outlook = Dispatch("Outlook.Application").GetNamespace("MAPI")
inbox = outlook.GetDefaultFolder(6)
messages = inbox.items
for message in messages:
    message = messages.GetNext()
    name = str(message.subject)
    name = re.sub('[^A-Za-z0-9]+', '', name)+'.msg'    
    message.SaveAs(os.getcwd()+'//'+name)