2016-07-05 4 views
0

メールの本文を取得したいが、html形式ではない。私はhtmlメールからテキストを抽出するodoo

def message_new(self, cr, uid, msg, custom_values=None, context=None): 
""" Overrides mail_thread message_new that is called by the mailgateway 
    through message_process. 
    This override updates the document according to the email. 
""" 
if custom_values is None: 
    custom_values = {} 
val = msg.get('from').split('<')[0] 
val1 = msg.get('from').split('<')[1] 
val2 = val1.split('>')[0] 
myString2 = msg.get('body') if msg.get('body') else '' 
soup = BeautifulSoup(myString2) 
data = soup.get_text() 
defaults = { 
    'name': msg.get('subject') or _("No Subject"), 
    'partner_name': val, 
    'email_from': val2, 
    'email_cc': msg.get('cc'), 
    'user_id': False, 
    'partner_id': msg.get('author_id', False), 
    'description': data, 
} 
if msg.get('priority'): 
    defaults['priority'] = msg.get('priority') 
defaults.update(custom_values) 
return super(hr_applicant, self).message_new(cr, uid, msg,custom_values=defaults, context=context) 
を出願人に電子メールをreceieveことができない私は、htmlタグを削除するにはBeautifulsoupと データ= re.sub(R '<。*?>'、 ''、HTML2) を使用しているが、それはうまくいきませんでした

答えて

0

私はHTMLParserを使用してきました。まったく同じことを成功させました.HTMLタグを取り除いてデータを保持します。

from HTMLParser import HTMLParser 

class MLStripper(HTMLParser): 
    def __init__(self): 
     self.reset() 
     self.fed = [] 
    def handle_data(self, d): 
     self.fed.append(d) 
    def get_data(self): 
     return ''.join(self.fed) 

def strip_tags(html): 
    s = MLStripper() 
    s.feed(html) 
    return s.get_data() 

strip_tagsは、HTMLコンテンツを含む文字列が必要です。

+0

これはうまくいきませんでしたので、odooで試しましたか?私はコードを更新しても同じ問題を抱えています。電子メールを受信しません。 – Khadija

関連する問題