code: def do_heavy_work(self, block):
          
  
          destinations = self.destinations()
          ''' FIXME currently we return block whether it was correctly processed or not because MailSenders are chained
              and not doing that would mean other wouldn't be able to try.'''
          if not set(destinations).issubset(block.destinations):
              self.log.debug("Block not for any of the associated destinations: %s", destinations)
          else:
              try:
                  self.do_send(block)
                  # mark the block as sent by this sender
                  block.send_destinations.extend(destinations)
  
                  verif_data = self.verification_data()
                  if verif_data is not None:
                      for destination in destinations:
                          block.destinations_verif_data[destination] = verif_data
              except SendingError:
                  self.log.exception("Failed to send block (%s) to destination (%s)", block, destinations)
          return block
docs: Note: Expects Compressor Block like objects