Ejemplo n.º 1
0
	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
Ejemplo n.º 2
0
    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