为了账号安全,请及时绑定邮箱和手机立即绑定

尝试获取重复代码以在满足条件后退出(Gmail)

尝试获取重复代码以在满足条件后退出(Gmail)

HUWWW 2023-09-05 20:26:56
使用以下代码:import imaplibimport timeuser = '#my username'password = '#my password'server = 'imap.gmail.com'mailbox = 'Inbox'imap = imaplib.IMAP4_SSL(server)imap.login(user, password)while True:    try:        email_count = imap.select(mailbox, True)        results, data = imap.search(None, '(FROM "#TestEmail" SUBJECT "Test")')        print('starting search')        ids = data[0]        id_list = ids.split()        latest_email_id = id_list[-1]        result, data = imap.fetch(latest_email_id, "(RFC822)")        raw_email = data[0][1]        print(raw_email)        print('email found, code will still run but no longer search')        exit()    except:        print("no email found, continuing search")    time.sleep(60)exit()目标是创建一个程序,当我不在办公室计算机旁时,我可以在后台运行该程序,以便我可以在需要时运行某些进程。我遇到的问题是代码:似乎没有刷新收件箱中的电子邮件列表(即,如果我发送主题应该触发响应的电子邮件,则不会发生任何事情(尽管如果在我启动代码时电子邮件已经在收件箱中,则响应不会发生)发生))。我无法找出一种方法让代码在成功完成一次操作后退出。所以基本上我试图让它搜索特定的密钥,然后一旦它找到该密钥并执行任务,它就会停止搜索该密钥。
查看完整描述

1 回答

?
鸿蒙传说

TA贡献1865条经验 获得超7个赞

好吧,这是一个死线程,但我想我会发布我为这个问题找到的“工作”脚本:


import imaplib

import time

import sys


user = '#username'

password = '#password'


server = 'imap.gmail.com'

mailbox = 'Inbox'

    





while True:


    try:

        imap = imaplib.IMAP4_SSL(server)

        imap.login(user, password)

        

        email_count = imap.select(mailbox, True)

        results, data = imap.search(None, '(FROM "#username2" SUBJECT "Test2")')

        print('starting search')

        ids = data[0]

        id_list = ids.split()

        latest_email_id = id_list[-1]

        result, data = imap.fetch(latest_email_id, "(RFC822)")

        raw_email = data[0][1]

        print(raw_email)

       

        imap.logout()


        import Restart_Printer #this is a script that I have set up to restart my 

                               #office printer


        sys.exit()


    except:

        print("no email found, continuing search")


    

    

    time.sleep(10)

所以我说“工作”的原因是因为这个脚本可以工作,但我不完全确定为什么。原始脚本实际上仍然不会停止运行,但它将停止运行原始脚本调用的 Restart_Printer.py 脚本(我猜测这是因为 Restart_Printer.py 脚本没有任何 end() 或 sys.exit命令,因此原始脚本可能正在尝试启动已经活动的脚本)。


但是,是的,这个脚本基本上会搜索您的电子邮件,直到从特定电子邮件地址(我使用个人备份电子邮件地址)找到特定关键字(在本例中主题行是“Test2”)。这里的想法是,当我不在办公室时,有人给我发一条消息说“嘿,复印机已停止运行(我们使用的垃圾邮件的常见问题)”,我可以将这个快速关键字发送到我的电子邮件地址和在我的 CPU 上运行的脚本将检测到它并为我执行该过程。


使用它作为模板,您应该能够设置您希望计算机远程运行的任何其他进程,因此请随意使用它!


查看完整回答
反对 回复 2023-09-05
  • 1 回答
  • 0 关注
  • 99 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信