#!/usr/bin/env perl use strict; use URI; my $RCSID = '$Id: mutt-mailto 14550 2006-10-23 11:48:47Z lefevre $'; my ($proc) = $RCSID =~ /^.Id: (\S+) / or die; $ARGV[0] =~ /^mailto:/ or die "Usage: $proc \n"; my $u = URI->new($ARGV[0]); my %headers = $u->headers; my $to = $u->to; my @cmd = -t STDIN ? qw/mutt/ : (qw/emacs -l emacs-mutt.el/); # (qw/uxterm +sb -sl 0 -n mutt-mailto -T/, "Mutt $to", qw/-e mutt/); my $body; while (my ($k,$v) = each %headers) { lc($k) eq 'bcc' and push @cmd, '-b', $v; lc($k) eq 'cc' and push @cmd, '-c', $v; lc($k) eq 'subject' and push @cmd, '-s', $v; lc($k) eq 'body' and $body = $v; } if (defined $body) { open TMP, '>', undef or die "$proc: can't create temporary file\n$!\n"; print TMP "$body\n" or die "$proc: can't print to temporary file\n$!\n"; system @cmd, '-i', "/proc/$$/fd/".fileno(TMP), $to; close TMP or die "$proc: can't close temporary file\n$!\n"; } else { exec @cmd, $to } # Test on: # mailto:a1@x?To=a2@x&Cc=a3@x&Bcc=a4@x&Subject=mailto%20test # mailto:a1@x?To=a2@x&Cc=a3@x&Bcc=a4@x&Subject=mailto%20test&body=The%20body.