Погоди-ка, а параметр sock на что? Он есть и у функции send(), и у конструктора SMTP(). Подготовь запроксированный экземпляр socket.socket и отдай туда.
Судя по упомянутому в комментах issue, нужно будет самому закрыть этот сокет, когда закончишь работу с SMTP.
Нет, конечно, есть варианты жёстче. Например, отнаследоваться от SMTP, переопределить
_create_connection(), и заменить/пропатчить self.loop так, чтобы вместо self.loop.create_connection() вызывалась твоя корутина. В ней уже формировать сокет как тебе надо.
Но мне кажется, проще поработать с sock.