Нет способа это сделать без участия самой нитки (отправка почты). Она должна напр периодически проверять флажок и если он установлен, то прекратить отправку, записать данные и выйти из run. Когда главная нитка получит closeEvent, она должна установить этот флажок и подождать пока отправка сделает свои дела
C++ (Qt)
mailThread.mStopFlag = true;
mailThread.wait();
P.S. Пожалуйста решите проблему с буквой Ы, а то Ваши посты трудно читать