diff --git a/erpnext/setup/doctype/email_settings/email_settings.py b/erpnext/setup/doctype/email_settings/email_settings.py index ef0a7631d89..4c45a77dafb 100644 --- a/erpnext/setup/doctype/email_settings/email_settings.py +++ b/erpnext/setup/doctype/email_settings/email_settings.py @@ -21,6 +21,82 @@ class DocType: """ if self.doc.fields.get(key): webnotes.conn.set_value('Control Panel', None, key, self.doc.fields[key]) + + def validate(self): + """ + Checks connectivity to email servers before saving + """ + self.validate_outgoing() + self.validate_incoming() + + + def validate_outgoing(self): + """ + Checks incoming email settings + """ + if self.doc.outgoing_mail_server: + from webnotes.utils import cint + import _socket + from webnotes.utils.email_lib.send import EMail + out_email = EMail() + out_email.server = self.doc.outgoing_mail_server.encode('utf-8') + out_email.port = cint(self.doc.mail_port) + out_email.use_ssl = self.doc.use_ssl + try: + out_email.login = self.doc.mail_login.encode('utf-8') + out_email.password = self.doc.mail_password.encode('utf-8') + except AttributeError, e: + webnotes.msgprint('Login Id or Mail Password missing. Please enter and try again.') + webnotes.msgprint(e) + + try: + sess = out_email.smtp_connect() + try: + sess.quit() + except: + pass + except _socket.error, e: + # Invalid mail server -- due to refusing connection + webnotes.msgprint('Invalid Outgoing Mail Server. Please rectify and try again.') + webnotes.msgprint(e) + except smtplib.SMTPAuthenticationError, e: + webnotes.msgprint('Invalid Login Id or Mail Password. Please rectify and try again.') + except smtplib.SMTPException, e: + webnotes.msgprint('There is something wrong with your Outgoing Mail Settings. \ + Please contact us at support@erpnext.com') + webnotes.msgprint(e) + + + def validate_incoming(self): + """ + Checks support ticket email settings + """ + if self.doc.support_host: + from webnotes.utils.email_lib.receive import POP3Mailbox + from webnotes.model.doc import Document + import _socket, poplib + inc_email = Document('Incoming Email Settings') + inc_email.host = self.doc.support_host.encode('utf-8') + inc_email.use_ssl = self.doc.support_use_ssl + try: + inc_email.username = self.doc.support_username.encode('utf-8') + inc_email.password = self.doc.support_password.encode('utf-8') + except AttributeError, e: + webnotes.msgprint('User Name or Support Password missing. Please enter and try again.') + webnotes.msgprint(e) + + pop_mb = POP3Mailbox(inc_email) + + try: + pop_mb.connect() + except _socket.error, e: + # Invalid mail server -- due to refusing connection + webnotes.msgprint('Invalid POP3 Mail Server. Please rectify and try again.') + webnotes.msgprint(e) + except poplib.error_proto, e: + webnotes.msgprint('Invalid User Name or Support Password. Please rectify and try again.') + webnotes.msgprint(e) + def on_update(self): """ @@ -39,4 +115,4 @@ class DocType: set_event('support.doctype.support_ticket.get_support_mails', 60*5, 1) else: from webnotes.utils.scheduler import cancel_event - cancel_event('support.doctype.support_ticket.get_support_mails') \ No newline at end of file + cancel_event('support.doctype.support_ticket.get_support_mails') diff --git a/erpnext/setup/doctype/email_settings/email_settings.txt b/erpnext/setup/doctype/email_settings/email_settings.txt index ef6efe609f7..b6e52fc69a0 100644 --- a/erpnext/setup/doctype/email_settings/email_settings.txt +++ b/erpnext/setup/doctype/email_settings/email_settings.txt @@ -5,18 +5,19 @@ { 'creation': '2010-08-08 17:08:59', 'docstatus': 0, - 'modified': '2011-07-25 15:03:51', + 'modified': '2012-01-25 18:44:45', 'modified_by': 'Administrator', 'owner': 'harshada@webnotestech.com' }, # These values are common for all DocType { - '_last_update': '1311586371', + '_last_update': '1325570647', 'allow_copy': 1, 'allow_email': 1, 'allow_print': 1, 'colour': 'White:FFF', + 'default_print_format': 'Standard', 'doctype': 'DocType', 'in_create': 1, 'issingle': 1, @@ -24,7 +25,7 @@ 'name': '__common__', 'section_style': 'Simple', 'server_code_error': ' ', - 'version': 34 + 'version': 35 }, # These values are common for all DocField @@ -59,21 +60,18 @@ # DocPerm { - 'doctype': 'DocPerm', - 'idx': 1 + 'doctype': 'DocPerm' }, # DocPerm { - 'doctype': 'DocPerm', - 'idx': 2 + 'doctype': 'DocPerm' }, # DocField { 'doctype': 'DocField', 'fieldtype': 'Section Break', - 'idx': 1, 'label': 'Outgoing Mails' }, @@ -81,7 +79,6 @@ { 'doctype': 'DocField', 'fieldtype': 'HTML', - 'idx': 2, 'label': '1', 'options': '