1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
|
# This code is part of Perl distribution Mail-Message version 4.02.
# The POD got stripped from this file by OODoc version 3.06.
# For contributors see file ChangeLog.
# This software is copyright (c) 2001-2026 by Mark Overmeer.
# This is free software; you can redistribute it and/or modify it under
# the same terms as the Perl 5 programming language system itself.
# SPDX-License-Identifier: Artistic-1.0-Perl OR GPL-1.0-or-later
package Mail::Message;{
our $VERSION = '4.02';
}
use strict;
use warnings;
use Log::Report 'mail-message', import => [ qw/__x error trace/ ];
use Mail::Message::Head::Complete ();
use Mail::Message::Field ();
#--------------------
sub bounce(@)
{ my $self = shift;
my $bounce = $self->clone;
my $head = $bounce->head;
if(@_==1 && ref $_[0] && $_[0]->isa('Mail::Message::Head::ResentGroup' ))
{ $head->addResentGroup(shift);
return $bounce;
}
my @rgs = $head->resentGroups;
my $rg = $rgs[0];
if(defined $rg)
{ $rg->delete; # Remove group to re-add it later: otherwise
while(@_) # field order in header would be disturbed.
{ my $field = shift;
ref $field ? $rg->set($field) : $rg->set($field, shift);
}
}
elsif(@_)
{ $rg = Mail::Message::Head::ResentGroup->new(@_);
}
else
{ error __x"method bounce requires To, Cc, or Bcc.";
}
$rg->set(Date => Mail::Message::Field->toDate) unless defined $rg->date;
unless(defined $rg->messageId)
{ my $msgid = $head->createMessageId;
$rg->set('Message-ID' => "<$msgid>");
}
$head->addResentGroup($rg);
# Flag action to original message
$self->label(passed => 1); # used by some maildir clients
$bounce;
}
1;
|