PostMaster::Prefilter zur Mail Manipulation?

Hilfe zu OTRS Problemen aller Art
Post Reply
jan10783
Znuny newbie
Posts: 4
Joined: 23 Apr 2013, 11:10
Znuny Version: 3.2.5
Real Name: Jan Hüffelmann
Company: Elumbus GmbH

PostMaster::Prefilter zur Mail Manipulation?

Post by jan10783 »

hallo,
ich habe ein ziemlich komplexes zuordnungsszenario bei dem ich ua. persönliche email addressen anhand einer ldap gruppenzugehörigkeit auf verschiedene gruppen schicken muss. Der Mechanismus einen Match über einen boolschen Rückgabewert hin einen bestimmten statischen Wert zu setzen würde mir hier nicht reichen bzw das ganze ziemlich aufblasen.
Meine Frage ist, ob es aus einem PostMaster::PreFilter heraus möglich ist die header (zw den content) einer eingegangenen email zu verändern/ergänzen. Wenn ja wie, habe dazu keine Beispiele oder API Funktionsbeschreibungen entdecken können bislang...
gruss
Johannes
Moderator
Posts: 393
Joined: 30 Jan 2008, 02:26
Znuny Version: All of them ^^
Real Name: Hannes
Company: Znuny|OTTERHUB

Re: PostMaster::Prefilter zur Mail Manipulation?

Post by Johannes »

Du kannst die Mail vor dem Import manipulieren, den 'groben' Umfang der mgl. Felder kannst Du dir aus den PostMasterFilter Oberflächen Modul ziehen. Dann musst du allerdings ins Perl und die Umsetzung vornehmen, sollen die AD Anfragen auch in dem Filter gemacht werden?

Ich habe hier mal einen einfachen Filter angehangen der Parameter Manipulation macht. Ich hoffe mal der geht noch ist schon etwas älter ;)
Hier wird eine Mail aus einem Kontaktformular generiert und der Reply-To neu gesetzt nach der Mail aus dem Kontaktformular Inhalt

Code: Select all

$Param{GetParam}->{'ReplyTo'} = $line;
An der Stelle kommst Du an die Parameter die Du dir in den PostMaster Filter im Admin Bereich ansehen kannst.

Gruß

Code: Select all

# --
# Kernel/System/PostMaster/Filter/SetRplyTo.pm
# --
# Modified Filter to set the reply-to from gone-wild forms 
# --
package Kernel::System::PostMaster::Filter::EMailSuchen;
use strict;
use warnings;

sub new {
   my ( $Type, %Param ) = @_;

    # allocate new hash for object
    my $Self = {};
    bless( $Self, $Type );
    $Self->{Debug} = $Param{Debug} || 0;

    # get needed objects
    foreach (qw(ConfigObject LogObject TicketObject TimeObject)) {
        $Self->{$_} = $Param{$_} || die "Got no $_!";
    }

    return $Self;
}

sub Run {
	my $Self       = shift;
	my %Param      = @_;
	my $LogMessage = undef;
	my %Config     = ();
	my %Set        = ();

	my $subject = $Param{GetParam}->{Subject};
	my $from    = $Param{GetParam}->{From};
	my %formulare = ();

###HASHES for filter###
	%formulare = (
		'info@xyz.de'=>'Anfrage über Kontaktformular',
	);
#######################

	while (my( $catch_mail, $catch_subject ) = each(%formulare) ) {

		if ( ( $from eq $catch_mail && $subject =~ $catch_subject ) )
		{
			#Search the body for mail adress:
			for my $line ( split /\n/, $Param{GetParam}->{Body} ) {
				if ( ($line =~ /E-Mail-Adresse:/)||$line =~ /E-Mail:/ ) {
					#Remove Mail from string
					$line =~ s/E-Mail-Adresse://;
					$line =~ s/E-Mail://;
					#Remove Whitespaces
					$line =~ s/^\s+//;
					$line =~ s/\s+$//;
					$Param{GetParam}->{'ReplyTo'} = $line;
					##finally our mail
				}
			}
		}
	else {
	}
	}
return 1;
}
1;
Gruß
Post Reply