Python电子邮件:尝试获取HREF链接值时,该值不会以等号(=)保存

时间:2018-10-05 17:56:21

标签: python email imap

特别是我正在寻找主题为“您的预订已确认!”的电子邮件。我正在尝试单击电子邮件正文中的链接。我的代码通常在发送确认电子邮件后几乎立即运行,我将对其进行进一步优化以打开带有该主题行的第一封电子邮件。

代码如下所示。我试图获取的超链接包含'=',但是在打印或返回它时,程序似乎完全删除了等号(=)。显然,我需要写更多才能将其发布。

我不确定该怎么写,但是我有一个属性

https://stackoverflow.com/php.?i=857398425237459“> 我在代码中的“值”将返回“ https://stackoverflow.com/php.?i857398425237459”。这使我无法正确获取链接信息以备将来使用。

import imaplib
import email
import quopri
import HTMLParser
import time
from selenium import webdriver
from selenium.webdriver.support.ui import Select
from bs4 import BeautifulSoup


class parseLinks(HTMLParser.HTMLParser):
    def handle_starttag(self, tag, attrs):
        global global_futures_fair_value
        if tag == 'a':
            for name, value in attrs:
                if name == 'href':
                    #print name
                    print value.type()
                    linkList.append(value)

def gmailLogin(username, password):

    M = imaplib.IMAP4_SSL('imap.gmail.com')

    M.login(username, password)
    M.select('Inbox')

    rv, data = M.search(None, 'ALL')
    mail_ids = data[0]
    id_list = mail_ids.split()
    latest_email_id = int(id_list[-1])
    typ, msg_data = M.fetch(latest_email_id, '(RFC822)')

    msg = email.message_from_string(msg_data[0][1])
    msg = str(msg.get_payload()[1])
    msg = quopri.decodestring(msg)

    linkParser = parseLinks()
    linkParser.feed(msg)
    M.close()
    M.logout()
    print linkList[0]
    return str(linkList[0])

linkList = []
browser = webdriver.Chrome()
answer = gmailLogin('USERNAME','PASSWORD')
browser.get(answer)

1 个答案:

答案 0 :(得分:0)

我弄清楚了,它与quopri以及它如何编码消息有关。在这里看到: How to understand the equal sign '=' symbol in IMAP email text?