Solved

Python: mailbox() and set_flag

Posted on 2009-05-12
5
309 Views
Last Modified: 2012-05-06
Hi experts,

I am writing Python code to process e-mails. This code only processes new e-mails. Whenever it finishes processing a new e-mail, it should update "Status". However, my code fails to do so. Anybody knows how to fix it?

Thanks so much.

mbox = mailbox.mbox('/var/spool/mail/' + user)
                for key, msg in mbox.iteritems():
                        flags = msg.get_flags()
 
                        if 'R' not in flags:
                                # process e-mails here
                                         try:
                                                msg.set_flag('R' + flags)
                                                mbox[key] = msg
                                                msg.flush()
                                        except:
                                                print "error in save 'R' info!"

Open in new window

0
Comment
Question by:davidw88
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 3
  • 2
5 Comments
 
LVL 3

Accepted Solution

by:
ilalopoulos earned 125 total points
ID: 24373428
two changes at lines 8 and 10:
at line 8 the method name is wrong, the correct is set_flags
at line 10 flush() is a method of mbox and not msg
mbox = mailbox.mbox('/var/spool/mail/' + user)
    for k, msg in mbox.iteritems():
        flags = msg.get_flags()
        if 'R' not in flags:
            # process e-mails here
            try:
                msg.set_flags('R' + flags)
                mbox[k] = msg
                mbox.flush()
            except:
                print "error in save 'R' info!"

Open in new window

0
 

Author Comment

by:davidw88
ID: 24376231
Hi ilalopoulos,

Thanks so much for your reply. Following your suggestions I have modified my code, however this time I got an except "error in save 'R' info!". Further investigation led to the code
mbox.flush()
"Operation not permitted".

I also got this error once "I/O operation on closed file". It seems to me that I should open that mail file explicitely.

I googled online however I did not find a clue how to fix it. Do you have any ideas about this?

Thanks again.
0
 

Author Comment

by:davidw88
ID: 24376338
just fixed it...

thanks ilalopoulos.
0
 
LVL 3

Expert Comment

by:ilalopoulos
ID: 24376361
Check your permission rights to act on the files or execute your script with sudo i.e.:

sudo python your_script.py
0
 
LVL 3

Expert Comment

by:ilalopoulos
ID: 24376374
Glad to be of help, good luck with your project.

John
0

Featured Post

On Demand Webinar - Networking for the Cloud Era

This webinar discusses:
-Common barriers companies experience when moving to the cloud
-How SD-WAN changes the way we look at networks
-Best practices customers should employ moving forward with cloud migration
-What happens behind the scenes of SteelConnect’s one-click button

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Plenty of writing has gone on the web trying to compare Python with other competitive programming languages and vice versa. However, not much has been put into a wholistic perspective. This article should help you decide whether to adopt Python as a…
Flask is a microframework for Python based on Werkzeug and Jinja 2. This requires you to have a good understanding of Python 2.7. Lets install Flask! To install Flask you can use a python repository for libraries tool called pip. Download this f…
Learn the basics of lists in Python. Lists, as their name suggests, are a means for ordering and storing values. : Lists are declared using brackets; for example: t = [1, 2, 3]: Lists may contain a mix of data types; for example: t = ['string', 1, T…
Learn the basics of while and for loops in Python.  while loops are used for testing while, or until, a condition is met: The structure of a while loop is as follows:     while <condition>:         do something         repeate: The break statement m…

730 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question