• Почему не могу указать 2 join subject и To?

    @lnk22 Автор вопроса
    messages = ListMessagesMatchingQuery(service,user_id,query)
    generate_results(req_date,flags.sender,",".join(["{}\n{}".format(x[0].encode('utf-8'),x[1].encode('utf-8')) for x in messages]))

    я сделал, спасибо что помагали.
    вообщем, это рабочий скрпит ,который работает по api гугла, вытаскивает тему емейлов, адресс куда отправили, дату емейла.

    нужен был для подсчета отправленных емейлов, спасибо.

    но если у вас есть 4-5 ящиков, гугл api мне не понравилось как работает.

    так-же хочу сделать универсальный скрпит, под все почтовые сервисы, т.к. появилась необходимость.
    так что, может кому-то понадобиться, пользуйтесь.

    спасибо
  • Почему не могу указать 2 join subject и To?

    @lnk22 Автор вопроса
    это messages.
    File "2gmail-query.py", line 110
    generate_results(req_date,flags.sender,",".join([x["Subject",",".join([x["To"] for x in messages]))
    ^
    SyntaxError: invalid syntax

    это код
    def ListMessagesMatchingQuery(service, user_id, query='is:unique from:-me'):
    response = service.users().messages().list(userId=user_id,q=query).execute()

    # Если нет сообщений - выход
    if 'messages' not in response:
    return []

    msg_ids = []
    # Проходимся по всем страницам paging и извлекаем все msg_id
    while 'nextPageToken' in response:
    page_token = response['nextPageToken']
    response = service.users().messages().list(userId=user_id, q=query, pageToken=page_token).execute()

    for i in response['messages']:
    msg_ids.append(i["id"])

    # Обрабатываем последнюю страницу paging
    for i in response['messages']:
    msg_ids.append(i["id"])

    return get_emails(service, user_id, msg_ids)

    def get_emails(service, user_id, ids):
    result = []
    for _id in ids:
    response = service.users().messages().get(userId=user_id, id=_id).execute()

    # Парсим емейл и тему с response
    r = {"To": None, "Subject": None}
    for i in response["payload"]["headers"]:
    if i["name"] in r.keys():
    r[i["name"]] = i["value"]

    result.append(r)
    return result

    def return_tomorrows_date(date):
    date += datetime.timedelta(days=1)
    return date
    def generate_results(date,sender, message_count):
    print (colored('Results', 'red'))
    print ('=======================================')
    print ('Date: %s' % date)
    print ('From: %s' % sender)
    print ('Mail: %s' % message_count)
    print ('=======================================')
    def main():
    if flags.user_id:
    user_id = flags.user_id
    else:
    user_id='me'
    req_date = ("%s-%s-%s" % (flags.year,flags.month,flags.day))
    date = datetime.datetime.strptime(req_date , '%Y-%m-%d').date()
    before_date = return_tomorrows_date(date)
    credentials = get_credentials()
    http = credentials.authorize(httplib2.Http())
    service = discovery.build('gmail', 'v1', http=http)
    query = ('from:%s after:%s before:%s' % (flags.sender, date, before_date))
    messages = ListMessagesMatchingQuery(service,user_id,query)
    generate_results(req_date,flags.sender,",".join([x["Subject",",".join([x["To"] for x in messages]))

    if __name__ == '__main__':
    main()