Description: Uses Win32::OLE to edit your Outlook mail from Vim (here, gvim). Not very sophisticated, but demonstrates the use of Win32::OLE to control the Outlook Object model.

To use:

  • Save the script as
  • Run pl2bat
  • Move vmail.bat into your PATH
  • When you have an Outlook message window open, do Start - Run - vmail
  • Make your changes, save and exit.
UPDATE: Modified so that if there is no active item, a new mail message will be created.
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->CurrentI
+tem))) {
    $ins=$out->CreateItem(0);  # 0 = olMailItem
print $fh $ins->Body;
close $fh;

system "gvim $filename";

open ($fh, $filename) or die;
local $/=undef;

my $body=<$fh>;