estás mezclando 2 cosas...
try/except es para capturar errores, basicamente lo que hace es que si en try se da un error del tipo aceptado en except (por defecto todos) simplemente el programa no fallará sino irá a tu rutina de recuperacion, en realidad es try/except/finally pero el tercer paso no es tan usado...
puedes enviar correos sin ello, pero si se genera un error tu hilo morirá (si es el hilo principal los hijos pueden morir tambien o quedar huerfanos segun el caso) es recomendable usarlo en codigos donde se puedan dar errores o que retornen errores por defecto (como en socket por ejemplo al leer datos con un tiempo limite estipulado)
try/except es para capturar errores, basicamente lo que hace es que si en try se da un error del tipo aceptado en except (por defecto todos) simplemente el programa no fallará sino irá a tu rutina de recuperacion, en realidad es try/except/finally pero el tercer paso no es tan usado...
puedes enviar correos sin ello, pero si se genera un error tu hilo morirá (si es el hilo principal los hijos pueden morir tambien o quedar huerfanos segun el caso) es recomendable usarlo en codigos donde se puedan dar errores o que retornen errores por defecto (como en socket por ejemplo al leer datos con un tiempo limite estipulado)