29. August 2020 11:53
Hallo fiddi,
danke für die Antwort.
Das erzeugte PDF soll per E-Mail versendet werden. Wenn ich aus Gebuchte Rechnungen heraus die Standard Funktion per E-Mail versenden verwende, geht (sofern eingerichtet) der E-Mail Dialog auf (Page 9700) ,
an diesem Dialog wird schon die erstellte Datei nicht angehängt, weil kein Zugriff. Dort in der Page kann man ja noch ankreuzen ob das öffnen mit Outlook gewünscht ist, die Abfrage ob Outlook zur Verfügung steht passiert ja dann in CU9520 Mail Management.
Am schönsten wäre wenn Outlook aufgeht und die Datei dort dran gehängt wird.
Willst du das ganze mit dem lokalen Outlook versenden, musst du die Datei zunächst auf den Client downloaden. Da hilft dir das File Management weiter.
Ist dies kein Standard? Ich dachte das würde schon passieren, automatisch, dass die Datei auf den Client geladen wird, wenn man öffnen mit Outlook ankreuzt, aber wie oben geschrieben, zu dem Punkt kommt es erst gar nicht (weil Attachment schon nicht im Email Dialog angehängt wird).
Versand via Smtp geht leider nicht, da Ports gesperrt sind, Versand müsste über Exchange Webservice passieren.
Mein "Workaround" sieht derzeit so aus, in CU419 File Management die Function ServerTempFileName()
- Code:
IF locuserMailSetup.GET(USERID) THEN;
IF locuserMailSetup."Path for Temp Files"<>'' THEN BEGIN
FileName := CreateFileNameWithExtension(locuserMailSetup."Path for Temp Files"+FORMAT(CREATEGUID),FileExtension);
IF TempFile.CREATE(FileName) THEN BEGIN
TempFile.CLOSE;
END;
END ELSE BEGIN
TempFile.CREATETEMPFILE;
FileName := CreateFileNameWithExtension(TempFile.NAME,FileExtension);
TempFile.CLOSE;
END;
Erstellt die Temporäre Datei in einem pfad welcher dem Benutzer hinterlegt wurde.
Hierbei frage ich mich ob ich durch diesen Workaorund Probleme an anderer Stelle bekommen kann wo evtl gezielt auf das den "Standard" Pfad abgefragt wird.
Beim E-Mail Versand klinke ich mich ein in CU 9520 SendViaSMtp()
- Code:
IF locUserMailSetup.GET(USERID) THEN;
IF locUserMailSetup.Mailtype = locUserMailSetup.Mailtype::Exchange THEN BEGIN
WITH TempEmailItem DO BEGIN
FileTxt := "Attachment File Path";
WHILE STRPOS(FileTxt,'\') <>0 DO
FileTxt := COPYSTR(FileTxt,1+STRPOS(FileTxt,'\'));
varOldFile := "Attachment File Path";
varNewFile := locUserMailSetup."Path for Temp Files"+"Attachment Name";
IF FILE.RENAME(varOldFile,varNewFile) THEN;
SendMailOverExchangeWebService("Send to", Subject,GetBodyText,varNewFile);
IF EXISTS(varNewFile) THEN BEGIN
TestFile.OPEN(varNewFile);
TestFile.CLOSE;
ERASE(varNewFile);
END;
END;
EXIT(TRUE);
END ELSE BEGIN //Smtp Versand
Hier Prüfe ich ebenfalls ob ein Benutzerdefinierter Pfad hinterlegt ist und ob ein Häkchen Exchange angekreuzt ist, in dem Fall soll er über EWS versenden, sonst ganz normal über Smtp.
Da nach dem Prozedere die Temporäre Datei nicht gelöscht wurde, lösche ich diese hier nach dem Umbenennen und dem Versand.
Das ganze müsste ich noch auf der Citrix Umgebung testen mit einem Pfad wo der User auch Zugriff hat.
Meine Sorge bei der Sache ist dass wenn ich in der ServerTempFileName Funktion das TempFile an anderer Stelle ablege, dass evtl. andere Bereiche von NAV nicht auf dieses File zugreifen können weil es C:\ProgramData\Microsoft\Microsoft Dynamics NAV\100\Server\MicrosoftDynamicsNavServer$INSTANCE\users\default\XXX\USER\TEMP\ gesucht wird , es aber nun in c:\temp\ oder woanders liegt. Gibt ja bestimmt einige Funktionen welche auf ServerTempFileName zugreifen.
Falls ich das mit dem Datei Download zum Client falsch verstanden habe, wo müsste ich mich dann einklinken um das File erst zum Client downzuloaden und dann weitergeben?
Vielen Dank