codeunit 50032 "TKV Cleanup EMail Outbox"
{
Permissions = tabledata "EMail Outbox" = rimd;
trigger OnRun()
begin
DeleteOldEmailOutbox();
end;
procedure DeleteOldEmailOutbox()
var
RecordRef: RecordRef;
FieldRef: FieldRef;
DateQueuedFieldRef: FieldRef;
StatusFieldRef: FieldRef;
FiveMinutesAgo: DateTime;
EmailOutboxTableNo: Integer;
DateTimeValue: DateTime;
TextValue: Text;
begin
RecordRef.Open(Database::"EMail Outbox");
// Calculate time threshold (5 minutes ago)
FiveMinutesAgo := CurrentDateTime - 300000; // 300000ms = 5 minutes
// Access Date Queued field
DateQueuedFieldRef := RecordRef.Field(11); // Field No. 11 is Date Queued
// Access Status field
StatusFieldRef := RecordRef.Field(8); // Field No. 8 is Status
StatusFieldRef.SetRange(Enum::"Email Status"::Processing);
// Find records
if RecordRef.FindSet then
repeat
// Get the Date Queued value as Text and convert to DateTime
TextValue := Format(DateQueuedFieldRef.Value);
if Evaluate(DateTimeValue, TextValue) then begin
// Check if Date Queued is older than 5 minutes
if DateTimeValue < FiveMinutesAgo then
RecordRef.Delete(true);
end;
until RecordRef.Next = 0;
RecordRef.Close;
end;
}