Чтение и анализ электронной почты из Gmail с использованием С#, С++ или Python
Мне нужно сделать приложение Windows, которое время от времени обращается к учетной записи Gmail и проверяет, есть ли новое письмо. В случае, если он есть, он должен прочитать тело письма и тему (простое текстовое письмо, без изображений или вложений).
Пожалуйста, не используйте платные библиотеки, а в случае использования любых других libs укажите путь загрузки.
И мне нужен только орган электронной почты и тема. Поэтому, если длинное и сложное сообщение, которое приходит из Gmail, может быть проанализировано, и только две строки, содержащие объект и тело, было бы идеально.
Наконец, мне нужно только получить новые сообщения, поступившие с момента последнего выполнения. Таким образом, прочитанные сообщения могут быть отмечены как "прочитанные", и считаются только новые (отмеченные как "новые" ).
Код может быть написан на Python или С++, но я предпочитаю его на С#.
Похожие вопросы:
Ответы
Ответ 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.
Ответ 2
Используйте одну из многочисленных С# IMAP-библиотек.
Ответ 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