Лучший способ получить идентификатор электронной почты из строки, используя python - PullRequest
1 голос
/ 30 августа 2011

Каким образом мы можем получить идентификатор электронной почты 'X-Mailer-получателя:' из этой строки ниже, используя python.

используя re?

    Received: from localhost6.localdomain6 (unknown [59.92.85.188])
        by smtp.webfaction.com (Postfix) with ESMTP id 05B332078BD1
        for <rshivaganesh@gmail.com>; Fri, 26 Aug 2011 04:59:36 -0500 (CDT)
    Content-Type: text/html; charset="utf-8"
    MIME-Version: 1.0
    Content-Transfer-Encoding: 7bit
    Subject: Test subject100
    From: shivaganesh@gmail.com
    To: rshivaganesh@gmail.com
    Date: Fri, 26 Aug 2011 10:01:39 -0000
    Message-ID: <20110826100139.4763.43322@localhost6.localdomain6>
    X-Mailer-status: false
    X-Mailer-recipient: rshivaganesh@gmail.com

Спасибо

Ответы [ 3 ]

4 голосов
/ 30 августа 2011

Использование пакета email :

from email import message_from_string

msg = '''Received: from localhost6.localdomain6 (unknown [59.92.85.188])
    by smtp.webfaction.com (Postfix) with ESMTP id 05B332078BD1
    for <rshivaganesh@gmail.com>; Fri, 26 Aug 2011 04:59:36 -0500 (CDT)
Content-Type: text/html; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Subject: Test subject100
From: shivaganesh@gmail.com
To: rshivaganesh@gmail.com
Date: Fri, 26 Aug 2011 10:01:39 -0000
Message-ID: <20110826100139.4763.43322@localhost6.localdomain6>
X-Mailer-status: false
X-Mailer-recipient: rshivaganesh@gmail.com
'''
mail = message_from_string(msg)
print mail['x-mailer-recipient']

Использование регулярных выражений не очень хорошая идея, потому что a) имена заголовков не чувствительны к регистру, b) может быть несколько заголовков с одинаковымиимя, в) один заголовок может охватывать другой, например, у кого-то может быть почтовый адрес «X-Mailer-receient: @ hotmail.com», который будет путать подходы на основе регулярных выражений.

2 голосов
/ 30 августа 2011

Используйте регулярное выражение X-Mailer-recipient:\s*(.*). Вы можете использовать регулярные выражения в Python, как подробно здесь . Вам нужно будет убедиться, что вы случайно не включили текст после того, что искали. Например, приведенное выше регулярное выражение будет соответствовать всем «получателю X-Mailer: a@b.c BLARG BLARG BLARG» Затем вам нужно получить доступ к нужной группе захвата.

1 голос
/ 30 августа 2011

Вы также можете использовать что-то вроде этого:

d = """Received: from localhost6.localdomain6 (unknown [59.92.85.188]) by smtp.webfaction.com (Postfix) with ESMTP id 05B332078BD1 for <rshivaganesh@gmail.com>; Fri, 26 Aug 2011 04:59:36 -0500 (CDT) Content-Type: text/html; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: Test subject100 From: shivaganesh@gmail.com To: rshivaganesh@gmail.com Date: Fri, 26 Aug 2011 10:01:39 -0000 Message-ID: <20110826100139.4763.43322@localhost6.localdomain6> X-Mailer-status: false X-Mailer-recipient: rshivaganesh@gmail.com"""

if 'X-Mailer-recipient:' in d:
    d.split('X-Mailer-recipient:')[1].split()[0]
>>> rshivaganesh@gmail.com
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...