=encoding utf8

=head1 NAME

Mail::Message::Construct::Bounce - bounce a Mail::Message

=head1 SYNOPSIS

  $message->bounce(To => 'you')->send;

=head1 DESCRIPTION

Complex functionality on L<Mail::Message|Mail::Message> objects is implemented in
different files which are autoloaded.  This file implements the
functionality related to bouncing messages off to other destinations.

B<Be warned:> bouncing messages was very common practice in the past,
but does not play well together with SPF spam protection.  Unless you
bounce messages which originate from inside your own infrastructure,
you may get the message rejected by the spam-filters of the receivers.
The way around it, is to implement ARC... which the MailBox suite did
not try (yet).

=head1 METHODS

=head2 Constructing a message

=over 4

=item $obj-E<gt>B<bounce>( [<$rg_object|%options>] )

The program calling this method considers itself as an intermediate step
in the message delivery process; it therefore leaves a resent group
of header fields as trace.

When a message is received, the Mail Transfer Agent (MTA) adds a
C<Received> field to the header.  As C<%options>, you may specify lines
which are added to the resent group of that received field.  C<Resent-*>
is prepended before the field-names automatically, unless already present.

You may also specify an instantiated L<Mail::Message::Head::ResentGroup|Mail::Message::Head::ResentGroup> (RG)
object.  See L<Mail::Message::Head::ResentGroup::new()|Mail::Message::Head::ResentGroup/"METHODS"> for the available
options.  This is required if you want to add a new resent group: create
a new C<Received> line in the header as well.

If you are planning to change the body of a bounce message, don't!  Bounced
messages have the same message-id as the original message, and therefore
should have the same content (message-ids are universally unique).  If you
still insist, use L<Mail::Message::body()|Mail::Message/"The body">.

» example: 

  my $bounce = $folder->message(3)->bounce(To => 'you', Bcc => 'everyone');

  $bounce->send;
  $outbox->addMessage($bounce);

  my $rg     = Mail::Message::Head::ResentGroup->new(To => 'you',
     Received => 'from ... by ...');
  $msg->bounce($rg)->send;

=back

=head1 DIAGNOSTICS

=over 4

=item Error: method bounce requires To, Cc, or Bcc.

The message L<bounce()|Mail::Message::Construct::Bounce/"Constructing a message"> method forwards a received message off to someone
else without modification; you must specified it's new destination.
If you have the urge not to specify any destination, you probably
are looking for L<reply()|Mail::Message::Construct::Reply/"Constructing a message">. When you wish to modify the content, use
L<forward()|Mail::Message::Construct::Forward/"Constructing a message">.
Cast by C<bounce()>

=back

=head1 SEE ALSO

This module is part of Mail-Message version 4.03,
built on January 26, 2026. Website: F<http://perl.overmeer.net/CPAN/>

=head1 LICENSE

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.

