use strict;
use warnings;
use IO::File;
use Data::Dumper;
use 5.010;
use Storable qw(freeze thaw);
# Prepare Attachment
my $gif_binary = do{
my $fh = IO::File->new;
$fh->open('red.gif', O_RDONLY|O_BINARY) or die $!;
read($fh, my $buffer, -s $fh);
$fh->close;
$buffer;
};
# Einheitliche Datenstruktur
my $mail = [
{
role => 'header',
mta => 'localhost',
mesgid => 123456789,
date => scalar localtime,
},
{
role => 'header',
from => 'hugo@example.org',
to => 'lupo@example.com',
subject => 'Multi-Media-Mail'
},
{
role => 'part',
type => 'text/plain; Charset=UTF-8',
body => 'Inhalt der Nachricht als Text'
},
{
role => 'part',
type => 'image/gif',
body => $gif_binary,
label => 'Ein bischen Grafik',
filename => 'red.gif'
}
];
# Serialize
my $file = freeze($mail);
# Übertragung: Jeder MTA fügt am Anfang der Datei einen Block mit role => 'header' hinzu
# Dieser Block hat eine variable Länge und kann beliebige Informationen enthalten
# Z.B. den Return-Path
# Deserialize
# Das macht der Mailclient nach der Übertragung
say Dumper thaw($file);
Am Anfang steht immer die Idee: Weniger Overhead, kleine Bandbreiten und ein gemeinsamer Standard für SMS, MMS, Mail. Diesbezügliche Gremien gibt es (z.B. 3GPP, OMA usw.), die müssten nur mal richtig miteinander reden ;)