From mea@nic.funet.fi Thu Dec 12 16:52:22 1996
Received: from nic.funet.fi ([128.214.248.6]) by mea.tmt.tele.fi with ESMTP id <231475-115>; Thu, 12 Dec 1996 16:52:13 +0200
Received: by nic.funet.fi id <65253-28416>; Thu, 12 Dec 1996 16:51:28 +0200
Received: from antares.utu.fi ([130.232.1.2]) by nic.funet.fi with ESMTP id <68304-17185>; Fri, 8 Nov 1996 09:35:43 +0200
Received: by utu.fi id <30933-1151>; Fri, 8 Nov 1996 09:35:23 +0200
Subject: ZMailer message submission in PERL..
From:	Matti Aarnio <mea@utu.fi>
To:	zmailer@nic.funet.fi
Date:	Fri, 8 Nov 1996 09:35:23 +0200 (EET)
X-Mailer: ELM [version 2.4 PL25]
MIME-Version: 1.0
Content-Type:	text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7BIT
Message-Id: <96Nov8.093523+0200_eet.30933-1151+358@utu.fi>
Sender: mea@nic.funet.fi
Return-Path: <mea@nic.funet.fi>
Content-Length:  2423
Status: RO

I asked for a PERL-version of the posting, and this I got back.
In commentary letter Janne Edelman said (in finnish) about:

"This reads in from stdin, and sends to all addresses given as
 parameters.  Even though this sends all messages individually,
 it would be trivial to use more envelope 'to '-lines.  Should
 add sometimes.

 The input text must have RFC822 headers in it.

 ... and of course I could have answered directly to the person
 originating the question, but I am a bit tired at this late at
 night..."

I THINK this needs Perl5, though I am not sure.

/Matti Aarnio


#!/usr/bin/perl
#
#  LightPost for ZMailer
#  Version 0.1
#  Copyright (c) 1996 Janne Edelman
#  You may copy and use this piece of software under GPL
#
#####
#
#  Usage: lightpost [-t] email@address [ email@address ... ] < file
#
#  File must contain full headers with From, To, Subject, etc.
#  This script does NOT check the file at any way.
#
#  This script only adds the envelope at the begining of outgoing email
#  and allows mass postings with the same content.
#
#  With -t option the To header is changed to same as given email address
#
#####

if( ! -r '/etc/zmailer.conf') {
  die "Can't open zmailer.conf\n";
}

open(ZMAILER,'</etc/zmailer.conf');
while(<ZMAILER>) {
  chomp;
  split(/=/);
  $ZMAILER{$_[0]}=$_[1];
}
close ZMAILER;

require 'getopts.pl';
Getopts('t');

$part='header';

while(<STDIN>) {
  if($_ eq "\n") { $part='body' }
  push(@$part,$_);
}

foreach $hl ('Message-Id:','X-Mailer:','Cc:','Bcc:') {
  @header=strip_header($hl,@header);
}

if($opt_t) {
  @header=strip_header('To:',@header);
}

$outfile = $ZMAILER{'POSTOFFICE'} . "/public/lightpost.$$";
$time=time;
$hostname=`hostname`; chomp $hostname;
$domainname=`domainname`; chomp $domainname;
foreach $address (@ARGV) {
  $count++;
  open(OUT,">$outfile");
  select(OUT);
  print "to $address\n";
  print "env-end\n"; # added by [mea]
  if($opt_t) {
    print "To: $address\n";
  }
  print @header;
  print "Message-Id: <${time}.${count}.LP\@${hostname}.${domainname}>\n";
  print "X-Mailer: LightPost for Zmailer\n";
  print @body;
  select(STDOUT);
  close OUT;
  $inode=(stat($outfile))[1];
  $newfile=$ZMAILER{'POSTOFFICE'} . "/router/$inode";
  rename($outfile, $newfile);
}
print "$count messages send\n";
exit(0);

sub strip_header {
  return grep(!/^$_[0]/i, @_[1..$#_]);
}


	Janne K Edelman - PGP public key: finger edelman/pgp@tuug.utu.fi



syntax highlighted by Code2HTML, v. 0.9.1