[gelöst]Bericht als Mail senden über Outlook

22. Oktober 2021 11:32

Hallo,
ich möchte gerne einen Bericht als E-Mail mittels Outlook versenden.
Wobei aber die Request Page aktiv sein sollte, damit ich die entsprechenden Filter setzen kann.

Ich habe es über SMTPMail geschafft mit diesen Code, nur da kann ich das Mail nicht mehr bearbeiten bevor es versendet wird.
Code:
XMLParameter:= REPORT.RUNREQUESTPAGE(50107);
CustTempTable.Picture.CREATEOUTSTREAM(OStream,TEXTENCODING::UTF8);
CustTempTable.Picture.CREATEINSTREAM(IStream,TEXTENCODING::UTF8);
REPORT.SAVEAS(50107,XMLParameter,REPORTFORMAT::Pdf,OStream);

CLEAR(SMTPMail);
SMTPMail.CreateMessage('Navi','nav@xxx.at','abcr@xxx.at','Bericht','',TRUE);
SMTPMail.AddAttachmentStream(IStream,'Customer Invoice.pdf');

SMTPMail.AppendBody('This is a system generated mail. Please do not reply to this mail!');
SMTPMail.Send;
MESSAGE('Mail gesendet!');


Habt ihr eventuell eine Lösung dazu.

lg
stony
Zuletzt geändert von stony am 26. Oktober 2021 09:20, insgesamt 1-mal geändert.

Re: Bericht als Mail senden über Outlook

22. Oktober 2021 12:15

Codeunit 397

Re: Bericht als Mail senden über Outlook

25. Oktober 2021 21:39

Nun habe ich folgenden Code, der schon fast das macht was ich bräuchte.
Ich rufe dies über eine Action ein der Debitoren-Liste auf.
Nun hätte ich nur noch gerne, das in der Request-Page die Kundennummer schon ausgefüllt ist, mit der des aktuellen Datensatz.

Wie könnte ich das noch lösen.
Code:
    XMLParameter:= REPORT.RUNREQUESTPAGE(50107);
 
    IF ISCLEAR(WshShellTempPath) THEN
      CREATE(WshShellTempPath, TRUE, TRUE);
    TmpFolder := WshShellTempPath.ExpandEnvironmentStrings('%TEMP%');
 
    FinalFileName := TmpFolder + '\Report_50107.pdf';

    FileManagement.ServerCreateDirectory('C:\temp\Navision_Temp_Reports');
    Filename := 'C:\temp\Navision_Temp_Reports\Report_50107.pdf';     
 
    Content.CREATE(Filename);
    Content.CREATEOUTSTREAM(OStream);
    REPORT.SAVEAS(50107,XMLParameter,REPORTFORMAT::Pdf,OStream);
   
    Content.CLOSE;

    FileManagement.DownloadToFile('C:\temp\Navision_Temp_Reports\Report_50107.pdf',FinalFileName); 
    Mail.NewMessage('manfred.steinbacher@scheucher.at','','',MailBetreff,MailText,FinalFileName,TRUE); 
    FileManagement.ServerRemoveDirectory('C:\temp\Navision_Temp_Reports',TRUE);

Re: Bericht als Mail senden über Outlook

25. Oktober 2021 22:56

Funktion im Report ergänzen in der du die Variable übergibst. Report nicht per REPORT.RUN o. ä. aufrufen sondern als Variable und vorher die Übergabefunktion aufrufen.