psimem
04-02-2017, 15:46
Come da titolo avrei bisogno di una mano per creare uno script in grado di:
1- accedere ad una determinata etichetta in una casella di posta gmail
2- elencarne il contenuto (titoli mail)
3- selezionare solo le mail nuove
4- estrarre una parte di testo dal corpo delle mail nuove
5- salvare tale parte di testo in modo ricorsivo in un file di testo
6- segnare le mail aperte come lette
Per i punti 1-2-6 qualcosa sono riuscito a fare (python non lo conosco pero' mi e' stato consigliato come soluzione migliore :read: ) pero' mi mancano i 3-4-5.
#!/usr/bin/env python
import sys
import imaplib
import getpass
import email
import datetime
M = imaplib.IMAP4_SSL('imap.gmail.com')
### define function to list mails and print titles which is used in the appropriate block of code
def process_mailbox(M):
rv, data = M.search(None, "ALL")
if rv != 'OK':
print "No messages found!"
return
for num in data[0].split():
rv, data = M.fetch(num, '(RFC822)')
if rv != 'OK':
print "ERROR getting message", num
return
#print data
msg = email.message_from_string(data[0][1])
print 'Message %s: %s' % (num, msg['Subject'])
### gmail login
try:
M.login('email@gmail.com', 'password')
except imaplib.IMAP4.error:
print "LOGIN FAILED!!! "
# ... exit or deal with failure...
### list mailboxes
#rv, mailboxes = M.list()
#if rv == 'OK':
# print "Mailboxes:"
# print mailboxes
### open and process a specific mailbox
rv, data = M.select("YTsubs")
if rv == 'OK':
#print "Processing mailbox...\n"
process_mailbox(M)
M.close()
M.logout()
:help:
1- accedere ad una determinata etichetta in una casella di posta gmail
2- elencarne il contenuto (titoli mail)
3- selezionare solo le mail nuove
4- estrarre una parte di testo dal corpo delle mail nuove
5- salvare tale parte di testo in modo ricorsivo in un file di testo
6- segnare le mail aperte come lette
Per i punti 1-2-6 qualcosa sono riuscito a fare (python non lo conosco pero' mi e' stato consigliato come soluzione migliore :read: ) pero' mi mancano i 3-4-5.
#!/usr/bin/env python
import sys
import imaplib
import getpass
import email
import datetime
M = imaplib.IMAP4_SSL('imap.gmail.com')
### define function to list mails and print titles which is used in the appropriate block of code
def process_mailbox(M):
rv, data = M.search(None, "ALL")
if rv != 'OK':
print "No messages found!"
return
for num in data[0].split():
rv, data = M.fetch(num, '(RFC822)')
if rv != 'OK':
print "ERROR getting message", num
return
#print data
msg = email.message_from_string(data[0][1])
print 'Message %s: %s' % (num, msg['Subject'])
### gmail login
try:
M.login('email@gmail.com', 'password')
except imaplib.IMAP4.error:
print "LOGIN FAILED!!! "
# ... exit or deal with failure...
### list mailboxes
#rv, mailboxes = M.list()
#if rv == 'OK':
# print "Mailboxes:"
# print mailboxes
### open and process a specific mailbox
rv, data = M.select("YTsubs")
if rv == 'OK':
#print "Processing mailbox...\n"
process_mailbox(M)
M.close()
M.logout()
:help: