Name Exchange is an app that manages exchanging names for a gift exchange. It emails each participant their selected name and ensures that nobody receives his or her own name.
Name Exchange can also handle multiple groups of people where nobody should receive a name from someone in his or her own group. An example of this would be a gift exchange in an extended family where you do not want people exchanging gifts with people in their own households.
A working implementation is available at http://giftexchange.efinke.com/