This file is indexed.

/usr/share/doc/libmime-tools-perl/examples/mimepostcard is in libmime-tools-perl 5.503-1.

This file is owned by root:root, with mode 0o755.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
#!/usr/bin/perl -w

=head1 NAME

mimepostcard - send/output a multipart/alternative message


=head1 SYNOPSIS

Usage:

    mimepostcard /path/to/some/graphic.jpg to@addr.com

You can point it at a .gif file as well.
The special address "-" just causes the message to go to STDOUT.


=head1 DESCRIPTION

This sends a mesasge both as HTML and plain text.
I use "Data"; you would probably use "Path".


=head1 AUTHOR

Eryq, eryq@zeegee.com


=cut

use MIME::Entity;
use strict;
use Getopt::Std;

$SIG{__DIE__} = sub { die "mime_postcard: $_[0]\n" };

#------------------------------
# usage
#------------------------------
sub usage {
    my $problem = join '',@_;
    print STDERR "\n";
    print STDERR "Error: $problem\n" if $problem;
    my @usage;
    if (open O, '<'.$0){
	local($/) = "\n";
	1               while (defined($_ = <O>) and !/^=head1\s+SYNOPSIS/);
	push @usage, $_ while (defined($_ = <O>) and !/^=/);
	close O;
    }
    my $u = join '', @usage; $u =~ s/\A\n+//;
    $u =~ s{\n\n+(\s+)}{\n$1}g;
    print STDERR $u, "\n";
    exit -1;
}

#------------------------------
# main
#------------------------------
sub main {
    
    ### Get options:
    my %opts;
    getopts("", \%opts);

    ### Get graphic:
    my $graphic = shift @ARGV || usage "missing path to graphic\n";
    (-r $graphic) or die "$graphic unreadable\n";
    my $graphic_type;
    if    ($graphic =~ /\.gif$/i)   { $graphic_type = "image/gif" }
    elsif ($graphic =~ /\.jpe?g$/i) { $graphic_type = "image/jpeg" }
    elsif ($graphic =~ /\.png$/i)   { $graphic_type = "image/png" }
    else                            { die "unknown type for: $graphic\n"; }
    my $gid = "my-graphic";
    
    ### Get destination:
    my $dest = shift @ARGV || usage "missing destination\n";

    ### The top-level message:
    my $msg = MIME::Entity->build(To      => $dest,
				  Subject => 'A postcard for you',
				  Type    => 'multipart/alternative');
    
    ### Alternative #1 is the plain text:
    my $plain = $msg->attach(Type => 'text/plain',
			     Data => ["Having a wonderful time... \n",
				      "wish you were looking at HTML \n",
				      "instead of this boring text!\n"]);

    ### Alternative #2 is the HTML-with-content: 
    my $fancy = $msg->attach(Type => 'multipart/related');
    $fancy->attach(Type => 'text/html',
		   Data => [qq< <H1>Hey there!</H1> \n>,
			    qq< Having a <I>wonderful</I> time... \n>,
			    qq< take a look!\n >,
			    qq< <BR><IMG SRC="cid:$gid" ALT="Snapshot"><HR>>
			    ]);
    $fancy->attach(Type => $graphic_type,
		   Path => $graphic,
		   Id   => $gid);

    ### Print or send:
    if ($dest eq '-') {
	$msg->print;
    }
    else {
	$msg->smtpsend();
    }
}
eval { main() }; die "$0: $@" if $@;