docs: def send_messages(self, email_messages):
          """Write all messages to the stream in a thread-safe way."""
          if not email_messages:
              return
          with self._lock:
              try:
                  stream_created = self.open()
                  for message in email_messages:
                      if six.PY3:
                          self.write_message(message)
                      else:
                          self.write_message(message)
                      self.stream.flush()
                  if stream_created:
                      self.close()
              except:
                  if not self.fail_silently:
                      raise
          return len(email_messages)