我一直在为web应用程序编写自动化测试,它涉及发送电子邮件,不仅是为了创建帐户和重新设置密码,而且作为实际产品的前提,它用虚拟文档发送电子邮件。
作为我测试的一部分,我显然需要检查这些电子邮件中是否包含某些元素,例如。链接到注册,链接到文件等。
我已经编写了一些python代码(用于gmail原子提要),它只是查找和打印每封电子邮件的标题,如果它们是链接,也要打印它,但是它找不到链接。
import urllib2
import untangle
FEED_URL = 'https://mail.google.com/mail/feed/atom'
def get_unread_msgs(user, passwd):
auth_handler = urllib2.HTTPBasicAuthHandler()
auth_handler.add_password(
realm='New mail feed',
uri='https://mail.google.com',
user='{user}@gmail.com'.format(user=user),
passwd=passwd
)
opener = urllib2.build_opener(auth_handler)
urllib2.install_opener(opener)
feed = urllib2.urlopen(FEED_URL)
return feed.read()
if __name__ == "__main__":
import getpass
user = raw_input('Username: ')
passwd = getpass.getpass('Password: ')
xml = get_unread_msgs(user, passwd)
o = untangle.parse(xml)
try:
for item in o.feed.entry:
title = item.title.cdata
print title
link = item.link.cdata
if link:
print "Link"
print ' ', link
except IndexError:
pass # no new mail编辑:,我刚刚意识到原子提要实际上并没有给出消息数据。
有谁能建议一种替代的方法来实现我的目标吗?
发布于 2014-07-21 16:16:24
您可以通过imaplib访问消息:
import imaplib
def get_unread_msgs(user, passwd):
M = imaplib.IMAP4_SSL('imap.gmail.com')
M.login(user, passwd)
try:
M.select()
try:
type, data = M.search(None, '(UNSEEN)')
for num in data[0].split():
yield M.fetch(num, '(RFC822)')
finally:
M.close()
finally:
M.logout()您需要在gmail设置中启用IMAP,如果您还没有:
发布于 2014-07-21 22:56:47
如果您正在寻找(gmail特定的)解决方案而不轮询服务器进行更新,则可以查看Gmail通知 API。
https://stackoverflow.com/questions/24867139
复制相似问题