Create a MailQueue object. Do not use it directly, instead use:
my $MailQueueObject = $Kernel::OM->Get('Kernel::System::MailQueue');
Create a new queue element.
my $Result = $MailQueue->Create( ArticleID => '...', # optional MessageID => '...', # optional (in case article id was passed this should be also) Sender => '...', Recipient => '...' || [], Message => '...', Attempts => '...', # optional );
Returns 1 or undef.
Get a list of the queue elements.
my $List = $MailQueue->List( ID => '...' # optional ArticleID => '...' # optional Sender => '...' # optional Recipient => '...' # optional Attempts => '...' # optional );
This returns something like:
my $List = [ { ID => '...', ArticleID => '...', Attempts => '...', Sender => '...', Recipient => ['...'], Message => '...', DueTime => '...', LastSMTPCode => '...', LastSMTPMessage => '...', }, ..., ]
Get a queue element.
my $Item = $MailQueue->Get( ID => '...' # optional ArticleID => '...' # optional );
This returns something like:
$Item = { ID => '...', ArticleID => '...', Attempts => '...', Sender => '...', Recipient => ['...'], Message => '...', DueTime => '...', LastSMTPCode => '...', LastSMTPMessage => '...', };
or and empty hashref if element not found.
Update queue elements.
my $Result = $MailQueue->Update( Filters => {}, Data => {}, );
Returns 1 or undef.
Delete queue elements.
my $Result = $MailQueue->Delete( %Filters, # See _FiltersSQLAndBinds );
Returns 1 or undef.
Send/Process a mail queue element/item.
my $List = $MailQueue->Send( ID => '...', Sender => '...', Recipient => '...', Message => '...', Force => '...' # optional, to force the sending even if isn't time );
This returns something like:
$List = { Status => '(Failed|Pending|Success)', Message => '...', # undef if success. };
This method is called after a MailQueue item is successfully sent. It clears the item from the MailQueue, closes the communication log and triggers a Event Notification.
my $Result = $Object->_SendSuccess( Item => { ID => ..., ArticleID => ..., # optional UserID => ..., CommunicationLogObject => ..., } );
Returns 1 or undef.
Handles Send errors. Situations where the mail queue item is deleted: - SMTP 5?? errors codes, considered permanent errors. - reached maximum attempts
$Object->_SendError( Item => ..., SendResult => ..., );
This always returns undef.
Creates or Updates the Article Transmission Error record with the error message. Then, fires a Notification Event.
my $Result = $Object->_SetArticleTransmissionError( ArticleID => ..., Message => ..., MessageID => ..., UserID => ..., ForceUpdate => ..., CommunicationLogObject => ..., );
Returns 1 or undef.
Formats a Notification and asks Event Handler to send it.
my $Result = $Object->_SendEventNotification( ArticleID => ..., Status => "Queued|Sent|Error", Message => ..., UserID => ..., );
This returns something like:
my $Result = { Status => 'Failed', Message => 'Need ArticleID' };
in case of missing or invalid arguments, or the status of the EventHandler call.
Build the filter sql and associated binds.
my ( $FilterSQL, $Binds ) = $MailQueue->_FiltersSQLAndBinds( ID => '...' # optional ArticleID => '...' # optional CommunicationID => '...' # optional Sender => '...' # optional Recipient => '...' # optional Attempts => '...' # optional );
This returns something like:
$FilterSQL = '...'; $Binds = \[...];
Check if the provided email address(es) is valid.
my $IsValid = $MailQueue->_CheckValidEmailAddresses( ParamName => '...' # name of the parameter that we are checking Addresses => '...' || [] # email addresses to validate );
Returns 1 or undef.
Check if the provided data is a non-empty hash-ref.
my $IsValid = $MailQueue->_CheckValidMessageData( Data => {...} );
Returns 1 or undef.
Serialize a simple perl structure to be save in the database.
Returns an encoded or a storable string.
Deserialize a simple perl structure to the original format.
Checks if the article is already queued.
Returns 1 or undef.
Inserts a new record in the table and returns the newly record id. Returns a number (id of the new record inserted) or undef.
Creates the mail-queue item communication-log message association. It will also create the association for the article if any ArticleID was passed. Returns 1 always.
Get the communication log associated to the queue item, if not found, creates a new one.
my $CommunicationLog = $Self->_GetCommunicationLog( ID => '...' # mail-queue item ID );
Returns communication-log object.
This software is part of the OTRS project (https://otrs.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.