GetWeb

 view release on metacpan or  search on metacpan

MailBot/UI/OneMsg.pm  view on Meta::CPAN

package MailBot::UI::OneMsg;

#use MailBot::Internet;
use Mail::Internet;
use MailBot::Util;
use MailBot::Entity;
use MailBot::Config;
use MailBot::UI::Loop;

@ISA = qw( MailBot::UI );
use strict;

# my $SENDMAIL = "/usr/bin/sendmail";

# jf test sendmail Precedence line

my $gDoubleBounce = 0;

#my $MAIL = "/bin/Mail";
#(-x $MAIL) or die "no $MAIL program";

sub d
{
  MailBot::Util::debug @_;
}

sub vInit
{
    my $self = shift;
    my $config = MailBot::Config::current;

    # fix Mail::Util bug
    defined $ENV{LOGNAME} or
	$ENV{LOGNAME} = (getpwuid($>))[0];

    $$self{BOUNCE_ADDR} = $config -> getBounceAddr;
    $$self{NEVER_SEND} = $config -> neverSend;
}

sub vQuotaMultiplier
{
    1;
}

sub doubleBounce
{
    my $self = shift;
    my $badMessage = shift;
    my $error = shift;

    eval
    {
	$gDoubleBounce++ and
	    die "doubleBounce message double-bounced";

	my $bounceAddr = $$self{BOUNCE_ADDR};
	die "no bounce address" unless $bounceAddr =~ /./;

	my @data = ("$error\n\n",
		    "____Here is the double-bounced message____\n\n",
		    &MailBot::Util::messageToArray($badMessage)
		    );

	my $envelope = new MailBot::Envelope;
	&MailBot::Entity::setEnvelope($envelope);

	my $entity = build MailBot::Entity(Data => \@data);
	$entity -> head -> replace('to',$bounceAddr);
	$entity -> head -> replace('subject','GetWeb double-bounce');
	$self -> vSendMessage($entity);

    };
    if ($@)
    {
	print STDERR "triple bounce: $@";
    }
    $gDoubleBounce = 0;
    die "BOUNCE: saw double-bounce.  Closing down to prevent mail loop!";
}

sub vGetMessage
{
    my $self = shift;

    my $message = new Mail::Internet(\*STDIN);
    $self -> done;
    $self -> analyzeMessage($message);
}

sub analyzeMessage
{
    my $self = shift;
    my $message = shift;



( run in 1.883 second using v1.01-cache-2.11-cpan-39bf76dae61 )