[FIX]: add record reuls for fetchmail servers
[IMP]: add unique index, on email to document configuration, so same server can not be configured for multiple folders bzr revid: mga@tinyerp.com-20100422134447-3hh4wd7ey89pfczr
This commit is contained in:
parent
84a0a39d23
commit
b98126cb41
|
@ -117,7 +117,7 @@ def html2plaintext(html, body_id=None, encoding='utf-8'):
|
|||
html += '[%s] %s\n' % (i+1, url)
|
||||
return html
|
||||
|
||||
class mail_server(osv.osv):
|
||||
class email_server(osv.osv):
|
||||
|
||||
_name = 'email.server'
|
||||
_description = "POP/IMAP Server"
|
||||
|
@ -334,56 +334,56 @@ class mail_server(osv.osv):
|
|||
logger.notifyChannel('imap', netsvc.LOG_INFO, 'fetchmail start checking for new emails on %s' % (server.name))
|
||||
|
||||
count = 0
|
||||
# try:
|
||||
if server.type == 'imap':
|
||||
imap_server = None
|
||||
if server.is_ssl:
|
||||
imap_server = IMAP4_SSL(server.server, int(server.port))
|
||||
else:
|
||||
imap_server = IMAP4(server.server, int(server.port))
|
||||
|
||||
imap_server.login(server.user, server.password)
|
||||
imap_server.select()
|
||||
result, data = imap_server.search(None, '(UNSEEN)')
|
||||
for num in data[0].split():
|
||||
result, data = imap_server.fetch(num, '(RFC822)')
|
||||
if self._process_email(cr, uid, server, data[0][1], context):
|
||||
imap_server.store(num, '+FLAGS', '\\Seen')
|
||||
count += 1
|
||||
logger.notifyChannel('imap', netsvc.LOG_INFO, 'fetchmail fetch/process %s email(s) from %s' % (count, server.name))
|
||||
|
||||
imap_server.close()
|
||||
imap_server.logout()
|
||||
elif server.type == 'pop':
|
||||
pop_server = None
|
||||
if server.is_ssl:
|
||||
pop_server = POP3_SSL(server.server, int(server.port))
|
||||
else:
|
||||
pop_server = POP3(server.server, int(server.port))
|
||||
|
||||
#TODO: use this to remove only unread messages
|
||||
#pop_server.user("recent:"+server.user)
|
||||
pop_server.user(server.user)
|
||||
pop_server.pass_(server.password)
|
||||
pop_server.list()
|
||||
try:
|
||||
if server.type == 'imap':
|
||||
imap_server = None
|
||||
if server.is_ssl:
|
||||
imap_server = IMAP4_SSL(server.server, int(server.port))
|
||||
else:
|
||||
imap_server = IMAP4(server.server, int(server.port))
|
||||
|
||||
imap_server.login(server.user, server.password)
|
||||
imap_server.select()
|
||||
result, data = imap_server.search(None, '(UNSEEN)')
|
||||
for num in data[0].split():
|
||||
result, data = imap_server.fetch(num, '(RFC822)')
|
||||
if self._process_email(cr, uid, server, data[0][1], context):
|
||||
imap_server.store(num, '+FLAGS', '\\Seen')
|
||||
count += 1
|
||||
logger.notifyChannel('imap', netsvc.LOG_INFO, 'fetchmail fetch/process %s email(s) from %s' % (count, server.name))
|
||||
|
||||
imap_server.close()
|
||||
imap_server.logout()
|
||||
elif server.type == 'pop':
|
||||
pop_server = None
|
||||
if server.is_ssl:
|
||||
pop_server = POP3_SSL(server.server, int(server.port))
|
||||
else:
|
||||
pop_server = POP3(server.server, int(server.port))
|
||||
|
||||
#TODO: use this to remove only unread messages
|
||||
#pop_server.user("recent:"+server.user)
|
||||
pop_server.user(server.user)
|
||||
pop_server.pass_(server.password)
|
||||
pop_server.list()
|
||||
|
||||
(numMsgs, totalSize) = pop_server.stat()
|
||||
for num in range(1, numMsgs + 1):
|
||||
(header, msges, octets) = pop_server.retr(num)
|
||||
msg = '\n'.join(msges)
|
||||
self._process_email(cr, uid, server, msg, context)
|
||||
pop_server.dele(num)
|
||||
(numMsgs, totalSize) = pop_server.stat()
|
||||
for num in range(1, numMsgs + 1):
|
||||
(header, msges, octets) = pop_server.retr(num)
|
||||
msg = '\n'.join(msges)
|
||||
self._process_email(cr, uid, server, msg, context)
|
||||
pop_server.dele(num)
|
||||
|
||||
pop_server.quit()
|
||||
|
||||
logger.notifyChannel('imap', netsvc.LOG_INFO, 'fetchmail fetch %s email(s) from %s' % (numMsgs, server.name))
|
||||
|
||||
# except Exception, e:
|
||||
# logger.notifyChannel('IMAP', netsvc.LOG_WARNING, '%s' % (e))
|
||||
pop_server.quit()
|
||||
|
||||
logger.notifyChannel('imap', netsvc.LOG_INFO, 'fetchmail fetch %s email(s) from %s' % (numMsgs, server.name))
|
||||
|
||||
except Exception, e:
|
||||
logger.notifyChannel('IMAP', netsvc.LOG_WARNING, '%s' % (e))
|
||||
|
||||
return True
|
||||
|
||||
mail_server()
|
||||
email_server()
|
||||
|
||||
class mail_server_history(osv.osv):
|
||||
|
||||
|
|
|
@ -12,4 +12,20 @@
|
|||
<field eval="'()'" name="args"/>
|
||||
</record>
|
||||
</data>
|
||||
|
||||
<data>
|
||||
<record id="fetchmail_user_server" model="ir.rule.group">
|
||||
<field name="name">User wise Server</field>
|
||||
<field ref="model_email_server" name="model_id" model="ir.model"/>
|
||||
<field eval="True" name="global"/>
|
||||
</record>
|
||||
|
||||
<record id="fetchmail_user_server_rule" model="ir.rule">
|
||||
<field model="ir.model.fields" name="field_id" search="[('model','=','email.server'),('name','=','user_id')]"/>
|
||||
<field name="operator">=</field>
|
||||
<field name="operand">user.id</field>
|
||||
<field name="rule_group" ref="fetchmail_user_server"/>
|
||||
</record>
|
||||
|
||||
</data>
|
||||
</openerp>
|
||||
|
|
Loading…
Reference in New Issue