Exemple #1
0
def get_messages():
    client = GoogleClient()
    service = client.service
    # messages = service.users().messages().list(userId='me', q='from:{dummy@mail} filename:zip').execute()
    messages = service.users().messages().list(userId='me', q='filename:zip').execute()
    client.get_message('')
    pprint(messages)
Exemple #2
0
def get_with_option():
    from unz.mail_unzipper import GmailSearchQueryBuilder
    client = GoogleClient()
    query_builder = GmailSearchQueryBuilder('1m')
    ret = client.search_mails(query_builder.build_processing_mails_query(),
                              {'format': 'metadata',
                               'metadataHeaders': ['From', 'Subject', 'subject']})
    pprint(ret)
Exemple #3
0
def send_zipped_mail():
    client = GoogleClient()
    my_address = client.get_profile()['emailAddress']
    service = client.service
    with open('data/example/important_files_noenc.zip', 'rb') as f:
        zip_binary = f.read()
    message = create_message_with_zip(my_address, my_address,
                                      'Re: Hello Teppei',
                                      'これは大事なファイルです from script', zip_binary, 'important_files_noenc.zip')
    message['threadId'] = '1648ecad0fcc073b'
    ret = service.users().messages().send(userId='me', body=message,
                                          ).execute()
    print("sent: ", ret)
Exemple #4
0
def label_handling():
    client = GoogleClient()
    service = client.service
    labels = service.users().labels().list(userId='me').execute()

    # find unzipper labels
    needs_label = ['unzipper:done']
    unzipper_labels = []
    for label in labels['labels']:
        if label['name'] in needs_label:
            unzipper_labels.append(label)
            needs_label.remove(label['name'])

    if len(needs_label) > 0:
        print("create needed label")
        for label in needs_label:
            created_label = service.users().labels().create(userId='me',
                                                            body={
                                                                'name': label,
                                                                'labelListVisibility': 'labelShow',
                                                                'messageListVisibility': 'show'
                                                            }
                                                            ).execute()
            print(created_label)
            unzipper_labels.append(created_label)
    print(unzipper_labels)
Exemple #5
0
def load_zip():
    client = GoogleClient()
    service = client.service
    # messages = service.users().messages().list(userId='me', q='from:{dummy@mail} filename:zip').execute()
    messages = service.users().messages().list(userId='me', q='filename:zip').execute()
    if messages['resultSizeEstimate'] < 1:
        print("no zip message")
        return

    message_id = messages['messages'][0]['id']

    message = service.users().messages().get(userId='me', id=message_id).execute()
    # print(message)

    zip_attachment_id = None
    for attachment in message['payload']['parts']:
        mime = attachment['mimeType']
        if mime == 'application/zip':
            zip_attachment_id = attachment['body']['attachmentId']
            # currently only one zip file.
            break
    print(zip_attachment_id)
    if zip_attachment_id is None:
        print("no zip attachment(mime type error)")
        return

    attachment = service.users().messages().attachments().get(id=zip_attachment_id, messageId=message_id,
                                                              userId='me').execute()
    zip_binary = base64.b64decode(attachment['data'])
    print(zip_binary)
Exemple #6
0
def get_batch_messages():
    client = GoogleClient()
    service = client.service
    # messages = service.users().messages().list(userId='me', q='from:{dummy@mail} filename:zip').execute()
    message_ids = service.users().messages().list(userId='me', q='filename:zip').execute()
    batch = service.new_batch_http_request()
    ret = []

    def each_request_callback(request_id, response, exception):
        print(request_id)
        ret.append(response)

    import time
    tic = time.time()
    for message in message_ids['messages']:
        message_id = message['id']
        batch.add(service.users().messages().get(userId='me', id=message_id, format='metadata'),
                  callback=each_request_callback)
    batch.execute()
    # print("elapsed:", time.time() - tic)
    pprint(ret)
Exemple #7
0
logger.propagate = False  # stop propagate to root logger
handler = colorlog.StreamHandler()
handler.setFormatter(
    colorlog.ColoredFormatter(
        '%(log_color)s%(levelname)s:%(name)s:%(message)s'))
logger.addHandler(handler)

TMP_CACHE_DIR = "cache/"
NOPASS_SUFFIX = "_nopass"


def attachment_id2tmp_filename(attachment_id):
    return attachment_id[:30] + ".zip"


client = GoogleClient()


def store_encrypted_zip_mail(newer_than):
    label_name2id_table = client.get_label_name2id_table(
    )  # type: dict[str, str]
    my_address = client.get_my_address()

    for need_label_name in [PROCESSING_LABEL, DONE_LABEL]:
        if need_label_name not in label_name2id_table:
            created = client.create_label(need_label_name)
            label_name2id_table[need_label_name] = created['id']

    query_builder = GmailSearchQueryBuilder(newer_than,
                                            exclude_from=my_address)
Exemple #8
0
def get_subjects():
    client = GoogleClient()
    messages = client.search_mails()
    for message in messages:
        print(client.extract_message_subject(message))
Exemple #9
0
def get_profile():
    client = GoogleClient()
    profile = client.get_profile()
    print(profile)
Exemple #10
0
def main():
    GoogleClient.store_credentials()