use strict; use warnings; use Win32::OLE; use File::Temp qw/ tempfile tempdir /; my $dir = tempdir( CLEANUP => 1 ); my ($fh, $filename) = tempfile( DIR => $dir, SUFFIX=> '.mail' ); my $out = Win32::OLE->new('Outlook.Application') or die "oops\n"; my ($ins, $ai); if (! (($ai=$out->Application->ActiveInspector) && ($ins=$ai->CurrentItem))) { $ins=$out->CreateItem(0); # 0 = olMailItem $ins->Display; }; print $fh $ins->Body; close $fh; system "gvim $filename"; open ($fh, $filename) or die; local $/=undef; my $body=<$fh>; $ins->{Body}=$body;