Электронная почта Python: при попытке получить значение ссылки HREF значение не сохраняется со знаком равенства (=) - PullRequest
0 голосов
/ 05 октября 2018

В частности, я ищу письмо с темой "Ваш заказ подтвержден!"и я пытаюсь нажать на ссылку в теле письма.Мой код обычно запускается практически сразу после отправки письма с подтверждением, и я собираюсь оптимизировать его, чтобы открыть первое письмо с этой строкой темы.

Код показан ниже.Гиперссылка, которую я пытаюсь получить, содержит '=', но при печати или возврате программа, кажется, полностью удаляет знаки равенства (=).По-видимому, мне нужно написать больше, чтобы иметь возможность опубликовать это.

Я не уверен, как еще написать это, но допустим, у меня есть атрибут

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 голосов
/ 05 октября 2018

Я понял, это связано с quopri и тем, как он кодирует сообщение.Видно здесь: Как понять символ равенства '=' в тексте электронной почты IMAP?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...