Oh, weird. Happily, that makes things so much easier! Closing STDOUT and then reopening it on OLDOUT does work (at least on UNIX), and the eval isn't necessary. See if this works for you:
open(OLDOUT, ">&STDOUT");
close(STDOUT);
my $smtp = Net::SMTP->new('relay.utah-inter.net');
open(STDOUT, ">&OLDOUT");