docs: def send(self, test=None):
          '''
          Send the email through the Postmark system.
          Pass test=True to just print out the resulting
          JSON message being sent to Postmark
          '''
          self._check_values()
  
          # Set up message dictionary
          json_message = self.to_json_message()
  
          # if (self.__html_body and not self.__text_body) and self.__multipart:
          #     # TODO: Set up regex to strip html
          #     pass
  
          # If test is not specified, attempt to read the Django setting
          if test is None:
              try:
                  from django.conf import settings as django_settings
                  test = getattr(django_settings, "POSTMARK_TEST_MODE", None)
              except ImportError:
                  pass
  
          # If this is a test, just print the message
          if test:
              print('JSON message is:\n%s' % json.dumps(json_message, cls=PMJSONEncoder))
              return
  
          if self.__template_id:
              endpoint_url = __POSTMARK_URL__ + 'email/withTemplate/'
          else:
              endpoint_url = __POSTMARK_URL__ + 'email'
  
          # Set up the url Request
          req = Request(
              endpoint_url,
              json.dumps(json_message, cls=PMJSONEncoder).encode('utf8'),
              {
                  'Accept': 'application/json',
                  'Content-Type': 'application/json',
                  'X-Postmark-Server-Token': self.__api_key,
                  'User-agent': self.__user_agent
              }
          )
  
          # Attempt send
          try:
              # print 'sending request to postmark: %s' % json_message
              result = urlopen(req)
              jsontxt = result.read().decode('utf8')
              result.close()
              if result.code == 200:
                  self.message_id = json.loads(jsontxt).get('MessageID', None)
                  return True
              else:
                  raise PMMailSendException('Return code %d: %s' % (result.code, result.msg))
          except HTTPError as err:
              if err.code == 401:
                  raise PMMailUnauthorizedException('Sending Unauthorized - incorrect API key.', err)
              elif err.code == 422:
                  try:
                      jsontxt = err.read().decode('utf8')
                      jsonobj = json.loads(jsontxt)
                      desc = jsonobj['Message']
                      error_code = jsonobj['ErrorCode']
                  except KeyError:
                      raise PMMailUnprocessableEntityException('Unprocessable Entity: Description not given')
  
                  if error_code == 406:
                      raise PMMailInactiveRecipientException('You tried to send email to a recipient that has been marked as inactive.')
  
                  raise PMMailUnprocessableEntityException('Unprocessable Entity: %s' % desc)
              elif err.code == 500:
                  raise PMMailServerErrorException('Internal server error at Postmark. Admins have been alerted.', err)
          except URLError as err:
              if hasattr(err, 'reason'):
                  raise PMMailURLException('URLError: Failed to reach the server: %s (See "inner_exception" for details)' % err.reason, err)
              elif hasattr(err, 'code'):
                  raise PMMailURLException('URLError: %d: The server couldn\'t fufill the request. (See "inner_exception" for details)' % err.code, err)
              else:
                  raise PMMailURLException('URLError: The server couldn\'t fufill the request. (See "inner_exception" for details)', err)