Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/304.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/0/email/3.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 Feedparser解析条目中的特定文本_Python_Email_Raspberry Pi_Feedparser - Fatal编程技术网

Python Feedparser解析条目中的特定文本

Python Feedparser解析条目中的特定文本,python,email,raspberry-pi,feedparser,Python,Email,Raspberry Pi,Feedparser,更新: 在尝试了下面的答案之后,我能够部分实现我想要实现的目标。我无法让程序循环并不断寻找新邮件。下面是代码片段 import imaplib import email import RPi.GPIO as GPIO, time MAIL_CHECK_FREQ = 2 # check mail every X seconds #Setting up pin modes GPIO.setmode(GPIO.BCM) GREEN_LED = 18 RED_LED = 23 GPIO.

更新: 在尝试了下面的答案之后,我能够部分实现我想要实现的目标。我无法让程序循环并不断寻找新邮件。下面是代码片段

import imaplib
import email
import RPi.GPIO as GPIO, time


MAIL_CHECK_FREQ = 2      # check mail every X seconds

#Setting up pin modes
GPIO.setmode(GPIO.BCM)
GREEN_LED = 18
RED_LED = 23
GPIO.setup(GREEN_LED, GPIO.OUT)
GPIO.setup(RED_LED, GPIO.OUT)


#Mail to alert & credentials
GREETINGS = "Merry Christmas"
USERNAME = "username"
PASSWORD = "password"


# Connect
imapClient = imaplib.IMAP4_SSL("imap.gmail.com")
# Login
imapClient.login(USERNAME, PASSWORD)
# Choose folder inbox
imapClient.select("INBOX")

while True:
    # Fetch unseen messages
    _, message_ids = imapClient.search(None, "UNSEEN")
    for msg_id in message_ids[0].split():
        # Download the message
        _, data = imapClient.fetch(msg_id, "(RFC822)")
        # Parse data using email module
        msg = email.message_from_string(data[0][1])

        if msg["subject"] == GREETINGS:
            # do something...
            print "Working"
        else:
            print "Not working"
        # do something else...

    time.sleep(2)
原始问题:

我正在尝试使用python脚本文件解析来自gmail的新邮件。只有在收件箱中发送了具有特定主题的电子邮件时,我如何才能触发事件

更清楚地说,当我收到一封主题为“此处有文本”的电子邮件时,我想触发一个指示灯闪烁,并显示树莓圆周率。这将是一个循环,这样每次我收到一封主题相同的电子邮件时,LED都会闪烁X秒以关闭

这是我一直在尝试的脚本,它总是显示“不起作用”


我本人从未使用过提要解析器,但这里有一种替代方法。我建议你看看-它提供了访问电子邮件帐户和检索电子邮件的工具。还可以看看这个模块——你可以用它来解析一封电子邮件,并获取主题、发件人等信息。 看看这个例子:

import imaplib
import email
import time

GREETINGS = "Merry Christmas"

while True:
    # Connect
    imapClient = imaplib.IMAP4_SSL("imap.gmail.com")
    # Login
    imapClient.login(USERNAME, PASSWORD)
    # Choose folder inbox
    imapClient.select("INBOX")

    # Fetch unseen messages
    x, message_ids = imapClient.search(None, "UNSEEN")
    for msg_id in message_ids[0].split():
        # Download the message
        _, data = imapClient.fetch(msg_id, "(RFC822)")
        # Parse data using email module
        msg = email.message_from_string(data[0][1])

        if msg["subject"] == GREETINGS:
            # do something...
            print "Working"
        else:
            print "Not working"
        # do something else...

    # Log out
    imapClient.close()
    imapClient.logout()

    time.sleep(2)

好极了!正是我想要的。然而,我无法让它循环。请参见我在上述问题中的示例作为示例Update@Ram,你这是什么意思?程序是在第一次循环后退出还是停止检查电子邮件中的新消息?Victor,它停止检查。程序在第一次循环后没有退出。@Ram,对不起,我的错误。您必须注销,然后重新登录才能接收新消息。现在该工作了!嗨,维克多,谢谢你的更新。它现在运行得很好。非常感谢你的帮助。
import imaplib
import email
import time

GREETINGS = "Merry Christmas"

while True:
    # Connect
    imapClient = imaplib.IMAP4_SSL("imap.gmail.com")
    # Login
    imapClient.login(USERNAME, PASSWORD)
    # Choose folder inbox
    imapClient.select("INBOX")

    # Fetch unseen messages
    x, message_ids = imapClient.search(None, "UNSEEN")
    for msg_id in message_ids[0].split():
        # Download the message
        _, data = imapClient.fetch(msg_id, "(RFC822)")
        # Parse data using email module
        msg = email.message_from_string(data[0][1])

        if msg["subject"] == GREETINGS:
            # do something...
            print "Working"
        else:
            print "Not working"
        # do something else...

    # Log out
    imapClient.close()
    imapClient.logout()

    time.sleep(2)