2017-05-14 17 views
0

Google API pythonクライアントを使用して、電子メールの送信者の電子メールアドレス/名前を探したいとします。 これまでのところ、メッセージの詳細を抽出しましたが、ファインダの情報を抽出する方法を見つけるのが難しいです。ここでGmail Python APIを使用して電子メールの送信者の電子メールアドレスを取得する方法

は、コードスニペットです:

from __future__ import print_function 
import httplib2 
import os 

from apiclient import discovery 
from oauth2client import client 
from oauth2client import tools 
from oauth2client.file import Storage 

try: 
    import argparse 
    flags = argparse.ArgumentParser(parents=[tools.argparser]).parse_args() 
except ImportError: 
    flags = None 

# If modifying these scopes, delete your previously saved credentials 
# at ~/.credentials/gmail-python-quickstart.json 
SCOPES = 'https://www.googleapis.com/auth/gmail.readonly' 
CLIENT_SECRET_FILE = 'client_secret.json' 
APPLICATION_NAME = 'Gmail API Python Quickstart' 


def get_credentials(): 
    """Gets valid user credentials from storage. 

    If nothing has been stored, or if the stored credentials are invalid, 
    the OAuth2 flow is completed to obtain the new credentials. 

    Returns: 
     Credentials, the obtained credential. 
    """ 
    home_dir = os.path.expanduser('~') 
    credential_dir = os.path.join(home_dir, '.credentials') 
    if not os.path.exists(credential_dir): 
     os.makedirs(credential_dir) 
    credential_path = os.path.join(credential_dir, 
            'gmail-python-quickstart.json') 

    store = Storage(credential_path) 
    credentials = store.get() 
    if not credentials or credentials.invalid: 
     flow = client.flow_from_clientsecrets(CLIENT_SECRET_FILE, SCOPES) 
     flow.user_agent = APPLICATION_NAME 
     if flags: 
      credentials = tools.run_flow(flow, store, flags) 
     else: # Needed only for compatibility with Python 2.6 
      credentials = tools.run(flow, store) 
     print('Storing credentials to ' + credential_path) 
    return credentials 

def main(): 
    """Shows basic usage of the Gmail API. 

    Creates a Gmail API service object and outputs a list of label names 
    of the user's Gmail account. 
    """ 
    credentials = get_credentials() 
    http = credentials.authorize(httplib2.Http()) 
    service = discovery.build('gmail', 'v1', http=http) 

    results = service.users().messages().list(userId='me').execute() 
    messages = results['messages'] 

    mail = service.users().messages().get(userId='me', id=messages[0]['id'], format='minimal').execute() 
    # I have other formats(RAW, METADATA and FULL) but I cannot parse them. 
    print(mail) 

if __name__ == '__main__': 
    main() 

私はより多くの読み取り可能な情報を返すためにAPIによって返された電子メールのオブジェクトを解析する(内蔵またはサードパーティのライブラリーのいずれか)、いくつかの方法を探しています。いくつかのアドホック・メソッドもまた、時間のために機能します。

答えて

0

私は、電子メールに関する基本情報を抽出する特別な方法を得ました。ここで

は抜粋です:

metadata = mail['payload']['headers'] 
# This list contains information about To, From and Subject among other gibberish. 

for d in metadata: 

    # for sender's information 
    if d['name'] == 'From': 
     print(d['value']) 

    # for subject of the mail 
    if d['name'] == 'Subject': 
     print(d['value']) 
関連する問題