code: def parse_addresses (self):
          
          # cut off leading mailto: and unquote
          url = urllib.unquote(self.base_url[7:])
          # search for cc, bcc, to and store in headers
          mode = 0 # 0=default, 1=quote, 2=esc
          quote = None
          i = 0
          for i, c in enumerate(url):
              if mode == 0:
                  if c == '?':
                      break
                  elif c in '<"':
                      quote = c
                      mode = 1
                  elif c == '\\':
                      mode = 2
              elif mode==1:
                  if c == '"' and quote == '"':
                      mode = 0
                  elif c == '>' and quote == '<':
                      mode = 0
              elif mode == 2:
                  mode = 0
          if i < (len(url) - 1):
              self.addresses.update(getaddresses(url[:i]))
              try:
                  headers = urlparse.parse_qs(url[(i+1):], strict_parsing=True)
                  for key, vals in headers.items():
                      if key.lower() in EMAIL_CGI_ADDRESS:
                          # Only the first header value is added
                          self.addresses.update(getaddresses(urllib.unquote(vals[0])))
                      if key.lower() == EMAIL_CGI_SUBJECT:
                          self.subject = vals[0]
              except ValueError as err:
                  self.add_warning(_("Error parsing CGI values: %s") % str(err))
          else:
              self.addresses.update(getaddresses(url))
          log.debug(LOG_CHECK, "addresses: %s", self.addresses)
docs: Parse all mail addresses out of the URL target. Also parses
          optional CGI headers like "?to=foo@example.org".
          Stores parsed addresses in the self.addresses set.