server-env/mail_environment/env_mail.py

142 lines
6.9 KiB
Python

# -*- encoding: utf-8 -*-
##############################################################################
#
# Author Nicolas Bessi. Copyright Camptocamp SA
##############################################################################
from osv import fields
from osv import osv
from server_environment import serv_config
class IRMAIL(osv.osv):
_inherit = "ir.mail_server"
def _get_smtp_conf(self, cursor, uid, ids, name, args, context=None):
"""
Return configuration
"""
res = {}
for conf in self.browse(cursor, uid, ids):
res_dict = dict(serv_config.items('outgoing_mail'))
res_dict['smtp_port'] = int(res_dict.get('smtp_port', 587))
res[conf.id] = res_dict
return res
_columns = {
'smtp_host': fields.function(_get_smtp_conf,
method=True,
string='SMTP Server',
type="char",
multi='smtp_host',
size=128),
'smtp_port': fields.function(_get_smtp_conf,
method=True,
string='SMTP Port',
type="integer",
multi='smtp_port',
help="SMTP Port. Usually 465 for SSL, and 25 or 587 for other cases.",
size=5),
'smtp_user': fields.function(_get_smtp_conf,
method=True,
string='Username',
type="char",
multi='smtp_user',
help="Optional username for SMTP authentication",
size=64),
'smtp_pass': fields.function(_get_smtp_conf,
method=True,
string='Password',
type="char",
multi='smtp_pass',
help="Optional password for SMTP authentication",
size=64),
'smtp_encryption' :fields.function(_get_smtp_conf,
method=True,
string='smtp_encryption',
type="char",
multi='smtp_encryption',
help="Choose the connection encryption scheme:\n"
"- none: SMTP sessions are done in cleartext.\n"
"- starttls: TLS encryption is requested at start of SMTP session (Recommended)\n"
"- ssl: SMTP sessions are encrypted with SSL/TLS through a dedicated port (default: 465)",
size=64)}
IRMAIL()
class FetchmailServer(osv.osv):
"""Incoming POP/IMAP mail server account"""
_inherit = 'fetchmail.server'
def _get_incom_conf(self, cursor, uid, ids, name, args, context=None):
"""
Return configuration
"""
res = {}
for conf in self.browse(cursor, uid, ids):
res_dict = dict(serv_config.items('incoming_mail'))
res_dict['port'] = int(res_dict.get('port', 993))
res_dict['is_ssl'] = bool(int(res_dict.get('is_ssl', 0)))
res_dict['attach'] = bool(int(res_dict.get('attach', 0)))
res_dict['original'] = bool(int(res_dict.get('original', 0)))
res[conf.id] = res_dict
return res
_columns = {
'server': fields.function(_get_incom_conf,
method=True,
string='Server',
type="char",
multi='server',
size=256, help="Hostname or IP of the mail server"),
'port': fields.function(_get_incom_conf,
method=True,
string='Port',
type="integer",
multi='port',
help="Hostname or IP of the mail server"),
'type': fields.function(_get_incom_conf,
method=True,
string='Type',
type="char",
multi='type',
size=64,
help="pop, imap, local"),
'is_ssl': fields.function(_get_incom_conf,
method=True,
string='Is SSL',
type="boolean",
multi='is_ssl',
help='Connections are encrypted with SSL/TLS through'
' a dedicated port (default: IMAPS=993, POP3S=995)'),
'attach': fields.function(_get_incom_conf,
method=True,
string='Keep Attachments',
type="boolean",
multi='attach',
help="Whether attachments should be downloaded. "
"If not enabled, incoming emails will be stripped of any attachments before being processed"),
'original': fields.function(_get_incom_conf,
method=True,
string='Keep Original',
type="boolean",
multi='attach',
help="Whether a full original copy of each email should be kept for reference"
"and attached to each processed message. This will usually double the size of your message database."),
'user': fields.function(_get_incom_conf,
method=True,
string='Username',
type="char",
multi='user',
size=64),
'password': fields.function(_get_incom_conf,
method=True,
string='password',
type="char",
multi='password',
size=64)}
FetchmailServer()