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 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105
|
# --
# Copyright (C) 2001-2021 OTRS AG, https://otrs.com/
# Copyright (C) 2021 Znuny GmbH, https://znuny.org/
# --
# This software comes with ABSOLUTELY NO WARRANTY. For details, see
# the enclosed file COPYING for license information (GPL). If you
# did not receive this file, see https://www.gnu.org/licenses/gpl-3.0.txt.
# --
#
# Forwards the first ticket article to the configured TargetAddress.
#
package scripts::test::GenericAgent::MailForward; ## no critic
use strict;
use warnings;
our @ObjectDependencies = (
'Kernel::System::Log',
'Kernel::System::Queue',
'Kernel::System::Ticket',
'Kernel::System::Ticket::Article',
);
sub new {
my ( $Type, %Param ) = @_;
my $Self = {};
bless( $Self, $Type );
return $Self;
}
sub Run {
my ( $Self, %Param ) = @_;
if ( !$Param{New}->{'TargetAddress'} ) {
$Kernel::OM->Get('Kernel::System::Log')->Log(
Priority => 'error',
Message => 'Need TargetAddress param for GenericAgent module!',
);
return;
}
my %Ticket = $Kernel::OM->Get('Kernel::System::Ticket')->TicketGet(
%Param,
UserID => 1,
);
my $ArticleObject = $Kernel::OM->Get('Kernel::System::Ticket::Article');
my $ArticleBackendObject;
my @Articles = $ArticleObject->ArticleList(
%Param,
OnlyFirst => 1,
);
my %Article;
for my $Article (@Articles) {
$ArticleBackendObject = $ArticleObject->BackendForArticle(
%Param,
ArticleID => $Article->{ArticleID},
);
%Article = $ArticleBackendObject->ArticleGet(
%Param,
ArticleID => $Article->{ArticleID},
);
}
return if !(%Article);
my %AttachmentIndex = $ArticleBackendObject->ArticleAttachmentIndex(%Article);
my @Attachments;
for my $FileID ( sort { $a <=> $b } keys %AttachmentIndex ) {
my %Attachment = $ArticleBackendObject->ArticleAttachment(
%Article,
FileID => $FileID,
);
if (%Attachment) {
push @Attachments, \%Attachment;
}
}
my %FromQueue = $Kernel::OM->Get('Kernel::System::Queue')->GetSystemAddress( QueueID => $Ticket{QueueID} );
my $EmailArticleBackendObject = $ArticleObject->BackendForChannel( ChannelName => 'Email' );
$EmailArticleBackendObject->ArticleSend(
%Article,
Attachment => \@Attachments,
To => scalar $Param{New}->{'TargetAddress'},
From => "$FromQueue{RealName} <$FromQueue{Email}>",
SenderType => 'system',
SenderTypeID => undef, # overwrite from %Article
HistoryType => 'Forward',
HistoryComment => 'Email was forwarded.',
NoAgentNotify => 1,
UserID => 1,
);
return 1;
}
1;
|