我正在尝试制作一个 Python 程序,它只检索电子邮件的正文而不传递标题或任何其他参数。我不确定该怎么做。
目标是能够通过消息文本向程序发送基本命令。
我现在拥有的是:
import poplib
host = "pop.gmail.com"
mail = poplib.POP3_SSL(host)
print mail.getwelcome()
print mail.user("user")
print mail.pass_("pass")
print mail.stat()
print mail.list()
print ""
if mail.stat()[1] > 0:
print "You have new mail."
else:
print "No new mail."
print ""
numMessages = len(mail.list()[1])
for i in range(numMessages):
for j in mail.retr(i+1)[1]:
print j
mail.quit()
input("Press any key to continue.")
这一切都很好,除了执行“print J”时它会打印整个消息,包括标题。我只想提取正文文本,不要产生任何额外的垃圾。
有人可以帮忙吗?谢谢!
最佳答案
我会使用 email 模块通过跳过标题信息的 get_payload() 方法获取电子邮件正文。
我在你的代码中添加了几行(它们在行尾标有# new statement
)
import poplib
import email # new statement
host = "pop.gmail.com"
mail = poplib.POP3_SSL(host)
print mail.getwelcome()
print mail.user("user")
print mail.pass_("pass")
print mail.stat()
print mail.list()
print ""
if mail.stat()[1] > 0:
print "You have new mail."
else:
print "No new mail."
print ""
numMessages = len(mail.list()[1])
for i in range(numMessages):
for j in mail.retr(i+1)[1]:
#print j
msg = email.message_from_string(j) # new statement
print(msg.get_payload()) # new statement
mail.quit()
input("Press any key to continue.")
关于Python:只检索 POP3 消息文本,没有标题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2218066/