Re: IMAP Problems

2010-07-04 Thread Paul Jefferson
Brilliant! Thanks guys I will have to have a play around later

On 4 July 2010 04:12, Grant Edwards inva...@invalid.invalid wrote:


  I'm trying to write a simple script which displays the basic details
  of a person's mailbox. My problem is that it causes all the messages
  to be marked as read on the server,
 
  code, mailboxen= server.list()
  print mailboxen
  # if it's called INBOX, then…
  server.select(INBOX)

 You probably want to try examine() instead of select().  That opens
 the mailbox in a read-only mode which and should avoid changing any
 flag values.

 From RFC3501:

  The EXAMINE command is identical to SELECT and returns the same
  output; however, the selected mailbox is identified as
  read-only. No changes to the permanent state of the mailbox,
  including per-user state, are permitted; in particular, EXAMINE
  MUST NOT cause messages to lose the \Recent flag.

 --
 Grant

 --
 http://mail.python.org/mailman/listinfo/python-list

-- 
http://mail.python.org/mailman/listinfo/python-list


IMAP Problems

2010-07-03 Thread Paul Jefferson
Hi,
I'm trying to write a simple script which displays the basic details
of a person's mailbox. My problem is that it causes all the messages
to be marked as read on the server, which is not what I'm after, and I also
can't get the imap.sort command to work properly (currently
commented out as I replaced it with a imap.search to get the thing
working.
These are probably very simple things, but I've not tried this library
before so am a bit stuck so any help wwould be very gratefully
received.
Thanks,
Paul

Code:

# -*- coding: cp1252 -*-
import imaplib,email

# you want to connect to a server; specify which server
server= imaplib.IMAP4_SSL('imap.googlemail.com')
# after connecting, tell the server who you are
server.login('x...http://groups.google.com/groups/unlock?_done=/group/comp.lang.python/browse_thread/thread/024b81e0ea199177msg=c9ac781cea58a990
@gmail.com', 'xxx')
# this will show you a list of available folders
# possibly your Inbox is called INBOX, but check the list of mailboxes
code, mailboxen= server.list()
print mailboxen
# if it's called INBOX, then…
server.select(INBOX)

typ, data = server.search(None, 'ALL')
#typ, data = server.sort(Date,UTF-8, 'ALL')
print len(data[0].split())
for num in data[0].split():
typ, data = server.fetch(num, '(RFC822)')
#print 'Message %s\n%s\n' % (num, data[0][1])
msg = email.message_from_string(data[0][1])
print msg[From]
print msg[Subject]
print msg[Date]
print ___

server.close()
server.logout()
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: IMAP Problems

2010-07-03 Thread MRAB

Paul Jefferson wrote:
Hi, 
I'm trying to write a simple script which displays the basic details 
of a person's mailbox. My problem is that it causes all the messages 
to be marked as read on the server, which is not what I'm after, and 
I also can't get the imap.sort command to work properly (currently 
commented out as I replaced it with a imap.search to get the thing 
working. 
These are probably very simple things, but I've not tried this library 
before so am a bit stuck so any help wwould be very gratefully 
received. 
Thanks, 
Paul 

Code: 

# -*- coding: cp1252 -*- 
import imaplib,email 

# you want to connect to a server; specify which server 
server= imaplib.IMAP4_SSL('imap.googlemail.com 
http://imap.googlemail.com') 
# after connecting, tell the server who you are 
server.login('x... 
http://groups.google.com/groups/unlock?_done=/group/comp.lang.python/browse_thread/thread/024b81e0ea199177msg=c9ac781cea58a990@gmail.com 
http://gmail.com', 'xxx') 
# this will show you a list of available folders 
# possibly your Inbox is called INBOX, but check the list of mailboxes 
code, mailboxen= server.list() 
print mailboxen 
# if it's called INBOX, then… 
server.select(INBOX) 

typ, data = server.search(None, 'ALL') 
#typ, data = server.sort(Date,UTF-8, 'ALL') 
print len(data[0].split()) 
for num in data[0].split(): 
typ, data = server.fetch(num, '(RFC822)') 
#print 'Message %s\n%s\n' % (num, data[0][1]) 
msg = email.message_from_string(data[0][1]) 
print msg[From] 
print msg[Subject] 
print msg[Date] 
print ___ 

server.close() 
server.logout() 


You might want to read what it says here:

http://tools.ietf.org/html/rfc2060.html#page-41

If you can use '(BODY[])' instead of '(RFC822)' then you could use
'(BODY.PEEK[])'.

Alternatively, try:

server.store(num, '-FLAGS', r'\Seen')

to mark it as unread after fetching.
--
http://mail.python.org/mailman/listinfo/python-list


Re: IMAP Problems

2010-07-03 Thread Grant Edwards

 I'm trying to write a simple script which displays the basic details 
 of a person's mailbox. My problem is that it causes all the messages 
 to be marked as read on the server,

 code, mailboxen= server.list() 
 print mailboxen 
 # if it's called INBOX, then… 
 server.select(INBOX)

You probably want to try examine() instead of select().  That opens
the mailbox in a read-only mode which and should avoid changing any
flag values.

From RFC3501:

  The EXAMINE command is identical to SELECT and returns the same
  output; however, the selected mailbox is identified as
  read-only. No changes to the permanent state of the mailbox,
  including per-user state, are permitted; in particular, EXAMINE
  MUST NOT cause messages to lose the \Recent flag.
  
-- 
Grant

-- 
http://mail.python.org/mailman/listinfo/python-list


IMAP Problems

2010-07-02 Thread Paul
Hi,
I'm trying to write a simple script which displays the basic details
of a person's mailbox. My problem is that it causes all the messages
to be marked as read on the server, which is not what I'm after, and I
also can't get the imap.sort command to work properly (currently
commented out as I replaced it with a imap.search to get the thing
working.
These are probably very simple things, but I've not tried this library
before so am a bit stuck so any help wwould be very gratefully
received.
Thanks,
Paul

Code:

# -*- coding: cp1252 -*-
import imaplib,email

# you want to connect to a server; specify which server
server= imaplib.IMAP4_SSL('imap.googlemail.com')
# after connecting, tell the server who you are
server.login('x...@gmail.com', 'xxx')
# this will show you a list of available folders
# possibly your Inbox is called INBOX, but check the list of mailboxes
code, mailboxen= server.list()
print mailboxen
# if it's called INBOX, then…
server.select(INBOX)

typ, data = server.search(None, 'ALL')
#typ, data = server.sort(Date,UTF-8, 'ALL')
print len(data[0].split())
for num in data[0].split():
typ, data = server.fetch(num, '(RFC822)')
#print 'Message %s\n%s\n' % (num, data[0][1])
msg = email.message_from_string(data[0][1])
print msg[From]
print msg[Subject]
print msg[Date]
print ___

server.close()
server.logout()
-- 
http://mail.python.org/mailman/listinfo/python-list