Well, it depends what you want to do when an exception occurs. If in thread 2 you want to notify a user interface of e-mails that didn't get sent, and the user interface is part of thread 1's context, then you should simply pass the user interface to thread 2 when you start it, and let thread 2 deal with the user interface itself.
The mind is a strange and wonderful thing. I'm not sure that it will ever be able to figure itself out, everything else, maybe. From the atom to the universe, everything, except itself.
I’ve looked at a lot of different solutions, and in my humble opinion Aspose is the way to go. Here’s the link: http://aspose.com