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)