code: def _make_request(self, action, params=None):
          
          ct = 'application/x-www-form-urlencoded; charset=UTF-8'
          headers = {'Content-Type': ct}
          params = params or {}
          params['Action'] = action
  
          for k, v in params.items():
              if isinstance(v, unicode):  # UTF-8 encode only if it's Unicode
                  params[k] = v.encode('utf-8')
  
          response = super(SESConnection, self).make_request(
              'POST',
              '/',
              headers=headers,
              data=urllib.urlencode(params)
          )
          body = response.read()
          if response.status == 200:
              list_markers = ('VerifiedEmailAddresses', 'SendDataPoints')
              e = boto.jsonresponse.Element(list_marker=list_markers)
              h = boto.jsonresponse.XmlHandler(e, None)
              h.parse(body)
              return e
          else:
              # HTTP codes other than 200 are considered errors. Go through
              # some error handling to determine which exception gets raised,
              self._handle_error(response, body)
docs: Make a call to the SES API.
  
          :type action: string
          :param action: The API method to use (e.g. SendRawEmail)
  
          :type params: dict
          :param params: Parameters that will be sent as POST data with the API
              call.