package Mail::SpamAssassin::Replier;
use strict;
use bytes;
use Carp;
use vars qw{
@ISA
};
@ISA = qw();
sub new {
my $class = shift;
$class = ref($class) || $class;
my ($main, $msg) = @_;
my $self = {
'main' => $main,
'msg' => $msg,
};
$self->{conf} = $self->{main}->{conf};
bless ($self, $class);
$self;
}
sub reply {
my ($self, $replysender) = @_;
my $addr = $self->{msg}->get_header('From');
if (!defined ($addr) || $addr eq '') {
dbg ("no From: or Reply-To: header found, ignoring");
return 0;
}
$addr =~ s/^.*?<(.+)>\s*$/$1/g or $addr =~ s/^(.+)\s\(.*?\)\s*$/$1/g;
require Mail::Internet;
my $reply = new Mail::Internet();
$reply->replace ('To', $addr);
$reply->replace ('From', $replysender);
my $text = $self->{conf}->{spamtrap_template};
while ($text =~ s/^(\S+): (.*)$//m) {
$reply->replace ($1, $2);
}
my $body = [
split (/$/, $text),
"\n\n",
$self->{msg}->get_all_headers(),
"\n",
@{$self->{msg}->get_body()}
];
$reply->body ($body);
$reply->tidy_body ();
$reply->send();
}
sub dbg { Mail::SpamAssassin::dbg (@_); }
1;