2012-02-23 1 views
2

Во-первых, примечание: я являюсь полным любителем в программировании и не знаю ни жемчуга, ни питона, ни java. Мне нужна простая команда, которая загружает определенное сообщение из моей учетной записи gmail в файл. Скажем, каждое сообщение имеет уникальный идентификатор. Мне нужен сценарий, который обращается к почтовому ящику и загружает сообщение с идентификатором x в виде текстового файла, а если есть вложения , он сохраняет их как соответствующий тип файла (поэтому вложение pdf будет сохранено в виде файла pdf).Загрузка элементов из gmail с помощью сценария unix/linux

Например, вот скрипт, я могу использовать (я проверил, что он работает)

curl -u username:password --silent "https://mail.google.com/mail/feed/atom" | tr -d '\n' | awk -F '<entry>' '{for (i=2; i<=NF; i++) {print $i}}' | sed -n "s/<title>\(.*\)<\/title.*name>\(.*\)<\/name>.*/\2 - \1/p"

для загрузки списка непрочитанных писем. Конечно, то, о чем я прошу, должно быть так же просто. Может ли кто-нибудь дать мне код? (Примечание: я даже не знаю, на каком языке выше.) Большое спасибо!

+1

Этот язык представляет собой цепочку каналов командной строки с использованием curl, awk и sed для извлечения/обработки XML-канала Google. Технически вы могли бы назвать это сценарием оболочки, но после использования нескольких языков/инструментов. –

+0

Спасибо, Марк! Знаете ли вы, как делать то, что я просил? – Aryeh

+0

Nope. Я никогда не пробовал получать вещи из Google через командную строку. Но это не будет простой однострочный, особенно если у вас есть несколько писем с вложениями. Вам нужно будет просмотреть корм для атома, чтобы узнать, указаны ли вложения, выяснить, что такое их идентификаторы, если Google даже предоставляет способ получения вложений из того, что предоставлено в фиде, и т. Д. ... затем перебирает все вложения и выбор каждого по очереди. –

ответ

2

Я рекомендую использовать модуль feedparser для анализа RSS-канала (который вы можете получить с помощью модуля Requests).

Это напечатает предметы ваших непрочитанных сообщений. Если вам нужно извлечь более подробную информацию из фида, прочитайте feedparser docs.

import feedparser 
import requests 

feed = requests.get('https://mail.google.com/mail/feed/atom', auth=('yourusername', 'yourpassword')) 
emails = feedparser.parse(feed.text.encode('UTF-8')) 

for email in emails.entries: 
    print email.title 

Однако подача Gmail не содержит какой-либо информации вложения, насколько я могу видеть, так что для вас был бы нужен другой подход (возможно, через IMAP).

Смежные вопросы