Headers from a transaction

We have a queue set up called ‘Limbo’, to hold tickets that either fail an
SA check, or don’t match any of our procmail recipes. Because of the nature
of the queue, we don’t care to be notified with the /body/ of the requesting
e-mail message, rather, we’d prefer to see the headers.

Right now, our template is $Transaction->Content(), but that gives us the
body. Is there any way to pull the headers from a transaction object?

Thanks.

  • Damian

Right now, our template is $Transaction->Content(), but that gives us the
body. Is there any way to pull the headers from a transaction object?

Well, you could use $Transaction->Message->First->Headers() , but thats a
bit of a mouthful, and doesn’t give you other nice options.

The following can be added to lib/RT/Transaction.pm, and will let you
sauce your Templates to your preferred taste with $Transaction->Headers(),
$Transaction->Headers( Prefix => '> ’ ), or $Transaction->Headers( Quote
=> ‘1’, Wrap => ‘76’, Prefix => ': ’ ).

( Note, this code is a 5 minute hack, and may require slight adjustment
for use )

                         Bruce Campbell                            RIPE
               Systems/Network Engineer                             NCC
             www.ripe.net - PGP562C8B1B             Operations/Security

To be added to Transaction.pm

Mostly same usage as RT::Transaction->Content()

Takes a paramhash. If the $args{‘Quote’} parameter is set, wraps this

message at $args{‘Wrap’}. $args{‘Wrap’} defaults to 70.

If $args{‘Prefix’} is set, prefixes each line with this sequence (ie, use

'> ’ if thats what you want).

sub Headers () {
my $self = shift;
my %args = ( Quote => 0,
Wrap => 70,
Prefix => undef,
@_ );

my $headers = undef;

# The headers of the messages are in the first attachment.
if( defined( $self->Message->First ) ){

	# Assign it.
	$headers = $self->Message->First->Headers;

}

# If we have to do anything.
if( $args{"Quote"} ne "0" && defined( $headers ) && defined( $args{"Wrap"} ) ){
	# Run it through Text::Wrapper
	require Text::Wrapper;
	my $columns = $args{"Wrap"};

	# Adjust for the prefix.
	if( defined( $args{"Prefix"} ) ){
		$columns = $columns - length( $args{"Prefix"} );
	}

	# Wrap it.
	my $wrapper = new Text::Wrapper(
			columns => $args{"Wrap"},
			body_start => "    ",
			);
	$headers = $wrapper->wrap( $headers );
}

# If we have to prefix stuff.
if( defined( $args{"Prefix"} ) && defined( $headers ) ){

	my @tsplit = split( /\n/, $headers );
	$headers = undef;

	# Reassemble it with the Prefix.
	foreach my $poppy( @tsplit ){

		$headers .= $args{"Prefix"} . $poppy . "\n";
	}
}

# return whatever we found.
return( $headers );

}