【发布时间】:2022-10-24 22:06:30
【问题描述】:
我正在寻找标题包含我收到多少比特币的信息的电子邮件,但由于电子邮件标题中有一个数字,我想要一种方法来查找数字等于或大于该数字的电子邮件。
示例...我有一个电子邮件标题,例如“您收到 0.000666703 BTC”,但我想搜索标题是这个还是有大量数字,例如,我希望能够找到这个标题“您收到0.002719281 BTC”,但我不想找到这个“您收到 0.000028181 BTC”,因为数字较小。我希望能够找到大于或等于第一个标题的数字,这是我的代码:
import imaplib
import credentials
import email
from bs4 import BeautifulSoup
imap_ssl_host = 'imap.gmail.com'
imap_ssl_port = 993
username = "myemail"
password = "mypass"
server = imaplib.IMAP4_SSL(imap_ssl_host, imap_ssl_port)
server.login(username, password)
server.select('INBOX')
typ, data = server.search(None, '(FROM "no-reply@coinbase.com" SUBJECT "You received 0,00066703 BTC" SINCE "24-Sep-2021")')
for num in data[0].split():
typ, data = server.fetch(num,'(RFC822)')
msg = email.message_from_bytes(data[0][1])
print(msg.get_payload(decode=True))
主题的开头将始终是“您收到”,但之后有数字,字母将是 btc 和“BTC”的数量以及我在问题中的示例,但我怎样才能只提取数字?
控制台输出是 HTML 内容,我只想知道标题(就像我之前解释的那样)是否存在,所以我可以做剩下的事情,有什么方法可以更有效地做到这一点?
【问题讨论】:
-
如果您只关心主题,您显然只需要获取主题。从您的示例中不清楚您是要搜索具有该主题的消息(在这种情况下,显然搜索返回的所有消息都是匹配的)还是更通用的。
-
控制台输出是任何有效负载,不一定是 HTML(尽管如果所有消息都来自同一个发件人并且它们总是发送 HTML,则可能是结果)。
-
@tripleee 我明白了,我的问题是如何找到大于 0 的数字,例如,在电子邮件的标题中,你知道吗?
-
如果您没有从该地址收到任何不相关的邮件,只需查找来自该发件人的所有邮件并检查其主题。如果您有更严格的标准,请再次edit您的问题以澄清实际问题是什么。
-
@tripleee我只想知道标题是否包含大于0的数字,例如HTML内容无关紧要,我只需要知道是否有这样的电子邮件