IdR müsste der Connect auch einen Timeout haben. Wenn der aber default auf
INFINITE
steht, dann wartest du eben bis "end of days"
Also TimeOut für den Connect mitgeben und entsprechend darauf reagieren.
Es macht da durchaus Sinn mit entsprechenden Warteschlangen zu arbeiten, die von den beiden Diensten Sende per
SMTP, Verschiebe in Versand-Ordner (laufen jeweils im eigenen Thread) abgearbeitet werden.
Die Daten liegen dafür lokal auf der Platte und werden dann wenn möglich abgearbeitet. Stürzt dein Programm ab, dann wird beim nächsten Start einfach an der Stelle weitergemacht