def sess(self): """get session""" if self._sess: return self._sess # check if email server specified if not getattr(self, 'server'): err_msg = _('Email Account not setup. Please create a new Email Account from Setup > Email > Email Account') frappe.msgprint(err_msg) raise frappe.OutgoingEmailError(err_msg) try: if self.use_ssl: if not self.port: self.port = 465 self._sess = smtplib.SMTP_SSL((self.server or ""), cint(self.port)) else: if self.use_tls and not self.port: self.port = 587 self._sess = smtplib.SMTP(cstr(self.server or ""), cint(self.port) or None) if not self._sess: err_msg = _('Could not connect to outgoing email server') frappe.msgprint(err_msg) raise frappe.OutgoingEmailError(err_msg) if self.use_tls: self._sess.ehlo() self._sess.starttls() self._sess.ehlo() if self.login and self.password: ret = self._sess.login(str(self.login or ""), str(self.password or "")) # check if logged correctly if ret[0]!=235: frappe.msgprint(ret[1]) raise frappe.OutgoingEmailError(ret[1]) return self._sess except smtplib.SMTPAuthenticationError as e: from frappe.email.doctype.email_account.email_account import EmailAccount EmailAccount.throw_invalid_credentials_exception() except _socket.error as e: # Invalid mail server -- due to refusing connection frappe.throw( _("Invalid Outgoing Mail Server or Port"), exc=frappe.ValidationError, title=_("Incorrect Configuration") ) except smtplib.SMTPException: frappe.msgprint(_('Unable to send emails at this time')) raise
def sess(self): """get session""" if self._sess: return self._sess # check if email server specified if not getattr(self, 'server'): err_msg = _( 'Email Account not setup. Please create a new Email Account from Setup > Email > Email Account' ) frappe.msgprint(err_msg) raise frappe.OutgoingEmailError(err_msg) try: if self.use_tls and not self.port: self.port = 587 self._sess = smtplib.SMTP((self.server or "").encode('utf-8'), cint(self.port) or None) if not self._sess: err_msg = _('Could not connect to outgoing email server') frappe.msgprint(err_msg) raise frappe.OutgoingEmailError(err_msg) if self.use_tls: self._sess.ehlo() self._sess.starttls() self._sess.ehlo() if self.login and self.password: ret = self._sess.login((self.login or "").encode('utf-8'), (self.password or "").encode('utf-8')) # check if logged correctly if ret[0] != 235: frappe.msgprint(ret[1]) raise frappe.OutgoingEmailError(ret[1]) return self._sess except _socket.error as e: # Invalid mail server -- due to refusing connection frappe.msgprint(_('Invalid Outgoing Mail Server or Port')) traceback = sys.exc_info()[2] raise_(frappe.ValidationError, e, traceback) except smtplib.SMTPAuthenticationError as e: frappe.msgprint(_("Invalid login or password")) traceback = sys.exc_info()[2] raise_(frappe.ValidationError, e, traceback) except smtplib.SMTPException: frappe.msgprint(_('Unable to send emails at this time')) raise