2016-03-02 2 views
1

У меня есть следующий код, чтобы получить HTML-адрес электронной почты как адрес электронной почты.Message, но я не уверен, как исходить отсюда, чтобы найти URL-адрес гиперссылки с учетом ее отображаемого имени. Я нашел URL в полезной нагрузке (0). Кроме того, электронная почта является href = 3D, поэтому она не работает, если я просто скопирую ссылку и вставляю ее в браузер.Как получить URL гиперссылки из электронной почты в python?

import sys 
import imaplib 
import getpass 
import email 
import datetime 
import email 


M = imaplib.IMAP4_SSL('imap.gmail.com') 
M.login('[email protected]','password123') 

rv,boxes = M.list() 
rv,boxes = M.select('Inbox/Test1') 

rv, data = M.search(None, 'ALL') 
typ, msg_data = M.fetch('1', '(RFC822)') 

msg = email.message_from_string(msg_data[0][1]) 

url_name = 'Click Here' 
html_text = msg.get_payload(0) 

ответ

0

это будет показать все HREF в сообщении ... можно обновить класс parseLinks для выбора их отдельные строки, они заинтересованы.

import imaplib 
import email 
import quopri 
import HTMLParser 

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 


M = imaplib.IMAP4_SSL('imap.gmail.com') 
M.login('[email protected]','password123') 

M.select('Inbox/Test1') 

rv, data = M.search(None, 'ALL') 
typ, msg_data = M.fetch('1', '(RFC822)') 

msg = email.message_from_string(msg_data[0][1]) 

url_name = 'Click Here' 
html_text = msg.get_payload(0) 

msg = str(msg.get_payload()[0]) 
msg = quopri.decodestring(msg) 

linkParser = parseLinks() 
linkParser.feed(msg)