从RSS源提取邮件标题和链接并发送邮件
我正在做一个Python的小实验。我写了一个脚本,用来检查RSS订阅源有没有新内容,然后把这些内容的标题和链接通过邮件发送出去。现在这个脚本能做到一些事情:每次运行时,它会取最新的内容的链接和标题,然后发邮件,不管之前是否已经发过这个内容。我还需要添加两个功能:一个是一次获取多个内容(然后一个一个地发邮件),另一个是检查这些内容是否已经发送过。请问我该怎么做?我在用feedparser,这是我目前的代码:
d = feedparser.parse('http://feedparser.org/docs/examples/rss20.xml')
link = d.entries[0].link
title = d.entries[0].title
然后还有几行代码用来发送包含“链接”和“标题”的邮件。我知道我需要使用Etag,但我还没搞明白怎么用,还有,我该怎么一个一个地发送邮件呢?
2 个回答
0
如果你想了解最简单的方法,可以看看 Python 的 smtplib 文档示例。(我这里就不重复代码了。)这就是发送基本邮件所需的全部内容。
如果你想发送更好看或者更复杂的邮件内容,也可以看看 Python 的 email 模块,当然。
0
关于解析信息源的部分,你可以参考这个问题里的建议,内容是关于如何检测RSS信息源中的新项目和变更项目?。简单来说,你可以对每个条目的内容进行哈希处理,然后用这个哈希值作为它的标识。
举个例子,当你的程序第一次运行时,它会计算每个条目的哈希值,并把这些哈希值存起来,然后通过邮件发送这些新条目。在下次运行时,它会重新计算每个条目的内容哈希值,并把这些哈希值和之前存的进行对比(你可以使用某种数据库来存储这些哈希值,或者至少在开发时用内存中的字典/列表来存储已经解析和发送的条目)。如果你的程序发现有哈希值是在之前的运行中没有生成的,它就会组装一封新邮件,把这些“新”条目发送出去。
至于邮件的组装部分,问题在Python中发送HTML邮件可能会对你有帮助。记得要发送一个纯文本版本和一个HTML版本的邮件。