AddTicketHistoryToMail: Difference between revisions
Jump to navigation
Jump to search
m (2 revisions imported) |
(Changed HTML parsing to HTML::Strip module (tested/working on 4.4.1)) |
||
(2 intermediate revisions by 2 users not shown) | |||
Line 3: | Line 3: | ||
Code cleanups: [[RuslanZakirov]] | Code cleanups: [[RuslanZakirov]] | ||
HTML parsing: aaverkios | |||
Requirements: Text::Wrapper and HTML::Strip perl modules | |||
<pre style="white-space: pre;"> | |||
Subject: Resolved: {$Ticket->Subject} | |||
Dear customer, | Dear customer, | ||
your issue regarding | your issue regarding | ||
"{$Ticket- | "{$Ticket->Subject()}", | ||
has been resolved in our ticket system. See below for history of this ticket. | has been resolved in our ticket system. See below for history of this ticket. | ||
If you have any further questions or concerns, please reply to this | If you have any further questions or concerns, please reply to this | ||
message to reopen the ticket. | message to reopen the ticket. | ||
regards | regards | ||
{$Ticket- | {$Ticket->OwnerObj->RealName || $Ticket->OwnerObj->Name} | ||
your-company-fooprint | your-company-fooprint | ||
---------------------------------------------------------------- | ---------------------------------------------------------------- | ||
Your initial request was | Your initial request was | ||
---------------------------------------------------------------- | ---------------------------------------------------------------- | ||
{$Ticket- | {$Ticket->Transactions->First->Content()} | ||
---------------------------------------------------------------- | ---------------------------------------------------------------- | ||
Complete Ticket History | Complete Ticket History | ||
---------------------------------------------------------------- | ---------------------------------------------------------------- | ||
{ | { | ||
my $resolved_message = ''; | my $resolved_message = ''; | ||
my $last_content = ''; | my $last_content = ''; | ||
my $transactions = $Ticket- | my $transactions = $Ticket->Transactions; | ||
$transactions- | $transactions->Limit( FIELD => 'Type', VALUE => 'Correspond' ); | ||
#If for some reason you want to expose internal comments to end users, | # If for some reason you want to expose internal comments to end users, | ||
#probably a bad idea, comment out the previous line | # probably a bad idea, comment out the previous line and uncomment these: | ||
#$transactions- | # $transactions->Limit( FIELD => 'Type', VALUE => 'Correspond', ENTRYAGGREGATOR => 'OR', OPERATOR => '=' ); | ||
#$transactions- | # $transactions->Limit( FIELD => 'Type', VALUE => 'Comment', ENTRYAGGREGATOR => 'OR', OPERATOR => '=' ); | ||
while (my $transaction = $transactions- | while (my $transaction = $transactions->Next) { | ||
my $attachments = $transaction- | my $attachments = $transaction->Attachments; | ||
while (my $message = $attachments- | while (my $message = $attachments->Next) { | ||
next unless $message- | next unless $message->ContentType =~ | ||
m!^(text/html|text/plain|message|text$)!i; | m!^(text/html|text/plain|message|text$)!i; | ||
my $content = $message- | my $content = $message->Content; | ||
$content = | |||
#HTML parsing start | |||
#Initialize the installed module | |||
use base "HTML::Strip"; | |||
#Create the strip object with the default constructor | |||
my $p = HTML::Strip->new(); | |||
# strip the content of HTML | |||
$content = $p->parse($content); | |||
#HTML parsing end | |||
next unless $content; | next unless $content; | ||
next if $last_content eq $content; | next if $last_content eq $content; | ||
$last_content = $content; | $last_content = $content; | ||
my $subject = ($message- | my $subject = ($message->Subject || $Ticket->Subject); | ||
my $wrapper = Text::Wrapper- | my $wrapper = Text::Wrapper->new(columns=>70); | ||
$content = $wrapper- | $content = $wrapper->wrap($content); | ||
$resolved_message .= "Subject: "; | $resolved_message .= "Subject: "; | ||
$resolved_message .= $subject; | $resolved_message .= $subject; | ||
$resolved_message .= "\n"; | $resolved_message .= "\n"; | ||
$resolved_message .= "From: "; | $resolved_message .= "From: "; | ||
$resolved_message .= $message- | $resolved_message .= $message->CreatorObj->RealName || $message->CreatorObj->EmailAddress; | ||
$resolved_message .= "\n"; | $resolved_message .= "\n"; | ||
$resolved_message .= "Time: "; | $resolved_message .= "Time: "; | ||
$resolved_message .= $message- | $resolved_message .= $message->CreatedObj->AsString; | ||
$resolved_message .= "\n"; | $resolved_message .= "\n"; | ||
$resolved_message .= "\n"; | $resolved_message .= "\n"; | ||
Line 83: | Line 96: | ||
$resolved_message; | $resolved_message; | ||
} | } | ||
------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ||
Common Information | Common Information | ||
------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ||
There is no need to reply to this message unless you want to RE-OPEN your | There is no need to reply to this message unless you want to RE-OPEN your | ||
ticket with ID [{$rtname} #{$Ticket- | ticket with ID [{$rtname} #{$Ticket->id}]. | ||
If you want to simply add a COMMENT to this ticket without re-opening the ticket, click below: | If you want to simply add a COMMENT to this ticket without re-opening the ticket, click below: | ||
mailto:rt-comment@yourdomain.com?subject=[{$rtname}%20#{$Ticket- | mailto:rt-comment@yourdomain.com?subject=[{$rtname}%20#{$Ticket->id()}]&body=%20 | ||
Please note: | Please note: | ||
- ALWAYS include the string [{$rtname} #{$Ticket- | - ALWAYS include the string [{$rtname} #{$Ticket->id}] in the subject line of all future correspondence about this issue. | ||
- Do NOT attach or include the content of previous emails already sent to you by rt. | - Do NOT attach or include the content of previous emails already sent to you by rt. | ||
</pre> |
Latest revision as of 19:31, 27 April 2017
Original author: Michael Markstaller - IFCO
Code cleanups: RuslanZakirov
HTML parsing: aaverkios
Requirements: Text::Wrapper and HTML::Strip perl modules
Subject: Resolved: {$Ticket->Subject} Dear customer, your issue regarding "{$Ticket->Subject()}", has been resolved in our ticket system. See below for history of this ticket. If you have any further questions or concerns, please reply to this message to reopen the ticket. regards {$Ticket->OwnerObj->RealName || $Ticket->OwnerObj->Name} your-company-fooprint ---------------------------------------------------------------- Your initial request was ---------------------------------------------------------------- {$Ticket->Transactions->First->Content()} ---------------------------------------------------------------- Complete Ticket History ---------------------------------------------------------------- { my $resolved_message = ''; my $last_content = ''; my $transactions = $Ticket->Transactions; $transactions->Limit( FIELD => 'Type', VALUE => 'Correspond' ); # If for some reason you want to expose internal comments to end users, # probably a bad idea, comment out the previous line and uncomment these: # $transactions->Limit( FIELD => 'Type', VALUE => 'Correspond', ENTRYAGGREGATOR => 'OR', OPERATOR => '=' ); # $transactions->Limit( FIELD => 'Type', VALUE => 'Comment', ENTRYAGGREGATOR => 'OR', OPERATOR => '=' ); while (my $transaction = $transactions->Next) { my $attachments = $transaction->Attachments; while (my $message = $attachments->Next) { next unless $message->ContentType =~ m!^(text/html|text/plain|message|text$)!i; my $content = $message->Content; #HTML parsing start #Initialize the installed module use base "HTML::Strip"; #Create the strip object with the default constructor my $p = HTML::Strip->new(); # strip the content of HTML $content = $p->parse($content); #HTML parsing end next unless $content; next if $last_content eq $content; $last_content = $content; my $subject = ($message->Subject || $Ticket->Subject); my $wrapper = Text::Wrapper->new(columns=>70); $content = $wrapper->wrap($content); $resolved_message .= "Subject: "; $resolved_message .= $subject; $resolved_message .= "\n"; $resolved_message .= "From: "; $resolved_message .= $message->CreatorObj->RealName || $message->CreatorObj->EmailAddress; $resolved_message .= "\n"; $resolved_message .= "Time: "; $resolved_message .= $message->CreatedObj->AsString; $resolved_message .= "\n"; $resolved_message .= "\n"; $resolved_message .= "$content\n"; $resolved_message .= "------------------------------------------------\n"; } } $resolved_message; } ------------------------------------------------------------------------- Common Information ------------------------------------------------------------------------- There is no need to reply to this message unless you want to RE-OPEN your ticket with ID [{$rtname} #{$Ticket->id}]. If you want to simply add a COMMENT to this ticket without re-opening the ticket, click below: mailto:rt-comment@yourdomain.com?subject=[{$rtname}%20#{$Ticket->id()}]&body=%20 Please note: - ALWAYS include the string [{$rtname} #{$Ticket->id}] in the subject line of all future correspondence about this issue. - Do NOT attach or include the content of previous emails already sent to you by rt.