Подтвердить что ты не робот

Чтение и анализ электронной почты из Gmail с использованием С#, С++ или Python

Мне нужно сделать приложение Windows, которое время от времени обращается к учетной записи Gmail и проверяет, есть ли новое письмо. В случае, если он есть, он должен прочитать тело письма и тему (простое текстовое письмо, без изображений или вложений).

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

И мне нужен только орган электронной почты и тема. Поэтому, если длинное и сложное сообщение, которое приходит из Gmail, может быть проанализировано, и только две строки, содержащие объект и тело, было бы идеально.

Наконец, мне нужно только получить новые сообщения, поступившие с момента последнего выполнения. Таким образом, прочитанные сообщения могут быть отмечены как "прочитанные", и считаются только новые (отмеченные как "новые" ).

Код может быть написан на Python или С++, но я предпочитаю его на С#.

Похожие вопросы:

4b9b3361

Ответ 1

Это печатает тему и тело невидимых сообщений и отмечает эти сообщения как видимые.

import imaplib
import email

def extract_body(payload):
    if isinstance(payload,str):
        return payload
    else:
        return '\n'.join([extract_body(part.get_payload()) for part in payload])

conn = imaplib.IMAP4_SSL("imap.gmail.com", 993)
conn.login("user", "password")
conn.select()
typ, data = conn.search(None, 'UNSEEN')
try:
    for num in data[0].split():
        typ, msg_data = conn.fetch(num, '(RFC822)')
        for response_part in msg_data:
            if isinstance(response_part, tuple):
                msg = email.message_from_string(response_part[1])
                subject=msg['subject']                   
                print(subject)
                payload=msg.get_payload()
                body=extract_body(payload)
                print(body)
        typ, response = conn.store(num, '+FLAGS', r'(\Seen)')
finally:
    try:
        conn.close()
    except:
        pass
    conn.logout()

Большая часть приведенного выше кода исходит из учебника Дуга Хеллмана по imaplib.

Ответ 3

Обратите внимание, что существуют некоторые различия между Gmail-IMAP и IMAPA. Например, из-за того, что Gmail относится к папкам, подобным ярлыкам, код, подобный приведенному ниже, не удаляет сообщение, если оно помечено какой-либо другой папкой:

imap_instance.uid('store', uid, '+FLAGS', '\\Deleted')
imap_instance.expunge()

Ответ 4

Я знаю, что это старый пост, но я хотел добавить следующую ссылку в библиотеку Open Source ImapX 2: https://imapx.codeplex.com/ разработчики, похоже, поддерживают обновление проекта. Отличная работа для всех вовлеченных

Ответ 5

Google открыл API Gmail для доступа к вашей учетной записи gmail. Вы можете проверить образец быстрого запуска с базовыми функциями по этой ссылке:

https://developers.google.com/gmail/api/quickstart/python