There are many ways you can do that.
The simplest way is to write a codeunit that runs the reports you want to send, attach them to an e-mail and send the e-mail.
Then you can put that codeunit into the job queue to run repeatedly at the frequency you select.
Here are some sample code that you can look at to get some ideas.
PROCEDURE ReportSendMailWithExternalAttachment(
ReportToSend: Integer;
Recordr: RecordRef;
TableID: Integer;
DocNo: Text;
ToAddr: List of [Text];
Subject: Text[100];
Body: Text[200];
AttachmentName: Text[100];
Param: Text; var Purchaseheader: Record “Purchase Header”): Boolean
var
TempBlob: Codeunit “Temp Blob”;
outStreamReport: OutStream;
inStreamReport: InStream;
TempBlobAtc: Array[10] of Codeunit “Temp Blob”;
outStreamReportAtc: Array[10] of OutStream;
inStreamReportAtc: Array[10] of InStream;
Parameters: Text;
EmailObj: Codeunit Email;
EmailMsg: Codeunit “Email Message”;
Question: Label ‘Are you Sure you want to send an email to %1’;
SendYesNo: Boolean;
// Attachments
FullFileName: Text;
DocumentAttachment: record “Document Attachment”;
i: Integer;
begin
EmailMsg.Create(ToAddr, Subject, Body, false);
//Generate blob from report
TempBlob.CreateOutStream(outStreamReport);
TempBlob.CreateInStream(inStreamReport);
Report.SaveAs(ReportToSend, Param, ReportFormat::Pdf, outStreamReport, Recordr);
// Mail.AddAttachmentStream(inStreamReport, AttachmentName);
i := 1;
//Get attachment from the document – streams
DocumentAttachment.Reset();
DocumentAttachment.setrange(“Table ID”, TableID);
DocumentAttachment.setrange(“No.”, DocNo);
if DocumentAttachment.FindSet() then begin
repeat
if DocumentAttachment.”Document Reference ID”.HasValue then begin
TempBlobAtc[i].CreateOutStream(outStreamReportAtc[i]);
TempBlobAtc[i].CreateInStream(inStreamReportAtc[i]);
FullFileName := DocumentAttachment.”File Name” ‘.’ DocumentAttachment.”File Extension”;
if DocumentAttachment.”Document Reference ID”.ExportStream(outStreamReportAtc[i]) then begin
//Mail Attachments
EmailMsg.AddAttachment(FullFileName, ‘PDF,’, inStreamReportAtc[i]);
end;
i = 1;
end;
until DocumentAttachment.NEXT = 0;
end;
//Send mail
exit(EmailObj.Send(EmailMsg));
end;
I found the code as a comment in this blog article:
robertostefanettinavblog.com/.../