如何使用Python选中雅虎邮箱(Yahoo Mail)的垃圾邮件文件夹
解决方案
从你输出的IMAP文件夹列表可以看到,雅虎邮箱的垃圾邮件文件夹官方命名为Bulk Mail,该文件夹已标注标准IMAP垃圾邮件标识\Junk,和Gmail、Outlook的命名规则不同是无法直接复用之前路径的核心原因。
方案1:直接指定雅虎垃圾邮件文件夹名称
你可以直接使用Bulk Mail作为路径选中对应文件夹,有两种常用写法:
- 登录时直接进入垃圾邮件文件夹:
smt = 'imap.mail.yahoo.com' with MailBox(smt).login('******@yahoo.com', 'password', initial_folder='Bulk Mail') as mailbox: # 直接操作垃圾邮件内的内容
- 登录后切换到垃圾邮件文件夹:
smt = 'imap.mail.yahoo.com' with MailBox(smt).login('******@yahoo.com', 'password', initial_folder='Inbox') as mailbox: # 切换到垃圾邮件文件夹 mailbox.folder.set('Bulk Mail') # 后续操作
方案2:通用兼容多服务商的写法
如果需要代码同时兼容Gmail、Outlook、雅虎等多个邮箱服务商,不需要硬编码各平台的垃圾邮件文件夹名称,可以通过匹配IMAP标准\Junk标记自动识别:
smt = 'imap.mail.yahoo.com' with MailBox(smt).login('******@yahoo.com', 'password', initial_folder='Inbox') as mailbox: spam_folder_name = None # 遍历所有文件夹匹配垃圾邮件标记 for folder in mailbox.folder.list(): if '\\Junk' in folder['flags']: spam_folder_name = folder['name'] break if spam_folder_name: mailbox.folder.set(spam_folder_name) # 后续操作垃圾邮件内容
这种写法可以自动适配不同服务商的特殊命名规则,不需要单独维护各平台的文件夹路径。
内容的提问来源于stack exchange,提问作者user15317824
相关产品推荐
相关产品推荐

