Re: script to send changesets per mail

From: Sam Ravnborg
Date: Sun Mar 13 2005 - 06:31:56 EST

On Thu, Mar 03, 2005 at 11:59:50AM +0100, Martin Waitz wrote:
> hoi :)
> I just tested my little script that can send changesets per mail.
> okok, it still had a bug when I first tested it but that should be
> fixed now.

Greg has a similar script - could you take a look and tell
which is the better (and why). We only want one in the kernel.

It is attached.


#!/usr/bin/perl -w

# horrible hack of a script to send off a large number of email messages, one after
# each other, all chained together. This is useful for large numbers of patches.
# Use at your own risk!!!!
# greg kroah-hartman Jan 8, 2002
# <greg@xxxxxxxxx>a
# updated to give a valid subject and CC the owner of the patch - Jan 2005

# change this to your email address.
$from = "SOMEONE <someone\>";

# modify these options each time you run the script
$to = 'linux-kernel@xxxxxxxxxxxxxxx';
$initial_reply_to = '<20050203173208.GA23964@xxxxxxxxxx>';
$initial_subject = "[PATCH] XXX fixes for 2.6.11-rc3";
@files = (

use Mail::Sendmail;

# we make a "fake" message id by taking the current number
# of seconds since the beginning of Unix time and tacking on
# a random number to the end, in case we are called quicker than
# 1 second since the last time we were called.
sub make_message_id
my $date = `date "+\%s"`;
my $pseudo_rand = int (rand(4200));
$message_id = "<$date$pseudo_rand\>";
print "new message id = $message_id\n";

$cc = "";

sub send_message
%mail = ( To => $to,
From => $from,
CC => $cc,
Subject => $subject,
Message => $message,
'Reply-to' => "Greg K-H <greg\>",
'In-Reply-To' => $reply_to,
'Message-ID' => $message_id,
'X-Mailer' => "gregkh_patchbomb",

$mail{smtp} = 'localhost';

sendmail(%mail) or die $Mail::Sendmail::error;

print "OK. Log says:\n", $Mail::Sendmail::log;
print "\n\n"

$reply_to = $initial_reply_to;
$subject = $initial_subject;

foreach $t (@files) {
$F = $t;
open F or die "can't open file $t";

# first line is the CC: list
$cc = <F>;
print "cc: $cc";

# second line is the Subject:
$subject = <F>;
print "subject: $subject";

undef $/;
$message = <F>; # slurp the whole file in
close F;
$/ = "\n";

# set up for the next message
$reply_to = $message_id;
# $subject = "Re: ".$initial_subject;

To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at
Please read the FAQ at