def create(self, subject, content, **kwargs): mail_to = kwargs.get('mail_to') if not mail_to: recipient = kwargs.get('recipient') if not recipient or not recipient.email_verified or not recipient.email: return None mail_to = kwargs['mail_to'] = recipient.email # send_from = kwargs.get('send_from') cache_connection = True if send_from: password = kwargs.pop('password', '') provider = kwargs.pop('provider', {}) cache_connection = False else: send_from = kwargs['send_from'] = Confs.get_smtp_user() password = Confs.get_smtp_password() provider = Confs.get_smtp_provider() if not isinstance(provider, dict): provider = provider_configs.get(provider, {}) if not send_from or not password or not provider: return None # if cache_connection and self.connection: connection = self.connection else: connection = EmailBackend(username=send_from, password=password, **provider) if cache_connection and not self.connection: self.connection = connection try: status = bool(send_mail(subject, content, send_from, [mail_to], connection=connection)) except Exception as e: status = False kwargs['status'] = status # return super(MailManager, self).create(subject=subject, content=content, **kwargs)
def retrieve(self, request, *args, **kwargs): if hasattr(Confs, 'get_proj_version'): v = Confs.get_proj_version(raw=True) else: v = False return Response({'server_version': v})
def register_smtp_confs(): Confs.register_group(SMTP_VALUES, '邮件', [ dict(name=SMTP_PROVIDER, note='邮箱服务商', klass='select', choice=providers), (SMTP_USER, '邮箱帐号'), dict(name=SMTP_PASSWORD, note='邮箱密码', klass='password'), ], SMTP_SCRIPT)