From a3c6bf9016f07a3b313cc0713f045ee81b59cabb Mon Sep 17 00:00:00 2001 From: "Rifakat Haradwala (Open ERP)" Date: Fri, 18 Mar 2011 18:52:52 +0530 Subject: [PATCH 01/10] [ADD] ir_mail_server.py: created class for mail server ir_mail_server bzr revid: rha@tinyerp.com-20110318132252-w0c8vi4svhwjntem --- openerp/addons/base/ir/ir_mail_server.py | 134 +++++++++++++++++++++++ 1 file changed, 134 insertions(+) create mode 100644 openerp/addons/base/ir/ir_mail_server.py diff --git a/openerp/addons/base/ir/ir_mail_server.py b/openerp/addons/base/ir/ir_mail_server.py new file mode 100644 index 00000000000..f1d80f6afc6 --- /dev/null +++ b/openerp/addons/base/ir/ir_mail_server.py @@ -0,0 +1,134 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# OpenERP, Open Source Management Solution +# Copyright (C) 2004-2011 Tiny SPRL () +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see +# +############################################################################## + +from osv import osv +from osv import fields +from tools.translate import _ +import tools + +#import time +#import binascii +#import email +#from email.header import decode_header +#from email.utils import parsedate +#import base64 +#import re +#import logging +#import xmlrpclib + +#_logger = logging.getLogger('mailgate') + +#import re +import smtplib +#import base64 +#from email import Encoders +#from email.mime.base import MIMEBase +#from email.mime.multipart import MIMEMultipart +#from email.mime.text import MIMEText +#from email.header import decode_header, Header +#from email.utils import formatdate +#import netsvc +#import datetime +#import tools +#import logging + +#EMAIL_PATTERN = re.compile(r'([^()\[\] ,<:\\>@";]+@[^()\[\] ,<:\\>@";]+)') # See RFC822 + +class ir_mail_server(osv.osv): + """ + mail server + """ + _name = "ir.mail.server" + + _columns = { + 'name': fields.char('Name', + size=64, required=True, + select=True, + help="The Name is used as the Sender name along with the provided From Email, \ +unless it is already specified in the From Email, e.g: John Doe ", + ), + 'email_id': fields.char('From Email', + size=120, required=True, + help="eg: 'john@doe.com' or 'John Doe '"), + 'smtp_host': fields.char('Server', + size=120, required=True, + help="Enter name of outgoing server, eg: smtp.yourdomain.com"), + 'smtp_port': fields.integer('SMTP Port', + size=64, required=True, + help="Enter port number, eg: 25 or 587"), + 'smtp_user': fields.char('User Name', + size=120, required=False, + help="Specify the username if your SMTP server requires authentication, " + "otherwise leave it empty."), + 'smtp_pass': fields.char('Password', + size=120, + required=False), + 'smtp_tls':fields.boolean('TLS'), + 'smtp_ssl':fields.boolean('SSL/TLS'), + 'priority': fields.integer('Priority', help=""), + } + + _defaults = { + 'name':lambda self, cursor, user, context:self.pool.get( 'res.users' + ).read(cursor, user, user, ['name'], context)['name'], + 'smtp_port': tools.config.get('smtp_port',25), + 'smtp_host': tools.config.get('smtp_server','localhost'), + 'smtp_ssl': tools.config.get('smtp_ssl',False), + 'smtp_tls': True, + 'priority': 10, + } + + _sql_constraints = [ + ( + 'email_uniq', + 'unique (email_id)', + 'Another setting already exists with this email ID !') + ] + + + def name_get(self, cr, uid, ids, context=None): + return [(a["id"], "%s (%s)" % (a['email_id'], a['name'])) for a in self.read(cr, uid, ids, ['name', 'email_id'], context=context)] + + def test_smtp_connection(self, cr, uid, ids, context=None): + """ + Test SMTP connection works + """ + try: + for smtp_server in self.browse(cr, uid, ids, context=context): + smtp = tools.connect_smtp_server(smtp_server.smtpserver, smtp_server.smtpport, user_name=smtp_server.smtpuname, + user_password=smtp_server.smtppass, ssl=smtp_server.smtpssl, tls=smtp_server.smtptls) + try: + smtp.quit() + except Exception: + # ignored, just a consequence of the previous exception + pass + except Exception, error: + raise osv.except_osv( + _("SMTP Connection: Test failed"), + _("Reason: %s") % error + ) + + raise osv.except_osv(_("SMTP Connection: Test Successfully!"), '') + + +ir_mail_server() + +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: From 75e5720f4e62340af8cf920b0e9a3787b867e455 Mon Sep 17 00:00:00 2001 From: "Rifakat Haradwala (Open ERP)" Date: Mon, 21 Mar 2011 18:42:09 +0530 Subject: [PATCH 02/10] [IMP] ir.xml: created view for ir_mail_server and added menu bzr revid: rha@tinyerp.com-20110321131209-jqwa3mop83nuy7av --- openerp/addons/base/ir/__init__.py | 5 +- openerp/addons/base/ir/ir.xml | 72 ++++++++++++++++++++++++ openerp/addons/base/ir/ir_mail_server.py | 41 ++------------ 3 files changed, 79 insertions(+), 39 deletions(-) diff --git a/openerp/addons/base/ir/__init__.py b/openerp/addons/base/ir/__init__.py index 9b4eb96df5f..4a6bd3c614c 100644 --- a/openerp/addons/base/ir/__init__.py +++ b/openerp/addons/base/ir/__init__.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- ############################################################################## -# +# # OpenERP, Open Source Management Solution # Copyright (C) 2004-2009 Tiny SPRL (). # @@ -15,7 +15,7 @@ # GNU Affero General Public License for more details. # # You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . +# along with this program. If not, see . # ############################################################################## @@ -36,6 +36,7 @@ import ir_rule import wizard import ir_config_parameter import osv_memory_autovacuum +import ir_mail_server # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/openerp/addons/base/ir/ir.xml b/openerp/addons/base/ir/ir.xml index a7e9922331b..06f76de232e 100644 --- a/openerp/addons/base/ir/ir.xml +++ b/openerp/addons/base/ir/ir.xml @@ -1942,5 +1942,77 @@ () + + + + ir.mail.server.form + ir.mail.server + form + +
+ + + + + + + + + + + + + + + + + + + + +