' Il seguente frammento di codice invia il file del documento e quelli dei documenti collegati in unico zip a destinatari appartenenti ad uno specifico ente. ' Va a cercare i destinatari con ente specifico, in esempio MD Dim par3 As AssocArray = New AssocArray q3=OpenTable(DB,"SELECT mail FROM PERSON WHERE mail is not null and (ente='MD' or ente2='MD' or ente3='MD' or ente4='MD' or ente5='MD')",par3,false,false,msg3) if empty(msg3) and q3.rowset.first() 'Se ci sono destinatari crea il messaggio Dim qmail as QWMail = New QWMail qmail.MsgCreate() 'Inserire il mittente qmail.MsgFrom("[email protected]") do while not q3.rowset.endofset() 'Vengono aggiunti come destinatari (TO) qmail.MsgAddDest(q3.rowset.fields(1).value, 1) q3.rowset.next() loop 'Vengono definiti SOGGETTO e TESTO del messaggio Subj = "Invio Documentazione - " + formfields("TIPO_CONT").Value + "/" + formfields("NUMERO").value Txt = "In allegato documento e, ove presenti, i file collegati raccolti in un archivio zip. " qmail.MsgSubject(Subj) qmail.MsgText(Txt) ' La query prende il percorso e il nome estraendolo da NOMEFILE, che contiene anche altri elementi Dim par As AssocArray = New AssocArray sql="select NOMEFILE, substring(NOMEFILE, charindex('_-',NOMEFILE)+2,len(cast(NOMEFILE as varchar(300)))) as TITOLO from linkdoc where iddoc1='DW' and :CODDOC0 like coddoc1+'%' and iddoc2='**' " par("CODDOC0")=CODDOC q=OpenTable(DB,sql,par,false,false,msg) if msg = "" if q.rowset.first() then files = New DBArray filenames = New DBArray ' Crea un ciclo che va a prendere tutti i file associati e li mette nei vettori che saranno argomenti per la creazione dello zip do while not q.rowset.endofset() ' file collegati nome=q.rowset.fields("nomefile").value ' report della registrazione - se si volesse mettere nello zip ' nome= QWSess.Q95_NOME_DIR_DOCUM + "\" + q.rowset.fields("DIRECTORY").value+"\ATTESA\"+q.rowset.fields("NOMEFILE").value If File (nome) Then files.Add(nome) filenames.Add(q.rowset.fields("TITOLO").value) End If q.rowset.Next() loop ' Terminata la raccolta degli allegati, si genera lo zip e lo si allega zipname = funique(Q95_PATH_TEMP + "\temp??????.zip") Dim zipper As qwlib.Zipper = New qwlib.Zipper zipper.GenerateZipFile(zipname, files, filenames) qmail.MsgAttachment("Allegati.zip", zipname) end if closetable(q) end if Dim par2 As AssocArray = New AssocArray sql2="select d.NOMEFILE,td.DIRECTORY, d.TITOLO, d.PUBBLICATO,d.tipo_cont, d.numero, d.custom1 FROM DOCUMENT d join TIPI_DOC td on d.TIPO=td.TIPO where d.OBSOLETO=0 and d._coddoc=:CODDOC " par2("CODDOC")=CODDOC q2=OpenTable(DB,sql2,par2,false,false,msg2) if msg2="" and q2.rowset.first() if q2.rowset.fields("PUBBLICATO").value = true percorsoreport = QWSess.Q95_NOME_DIR_DOCUM + "\" + q2.rowset.fields("DIRECTORY").value+"\DEFINITI\"+q2.rowset.fields("NOMEFILE").value else percorsoreport = QWSess.Q95_NOME_DIR_DOCUM + "\" + q2.rowset.fields("DIRECTORY").value+"\ATTESA\"+q2.rowset.fields("NOMEFILE").value end if ' Nome del file del documento nell'allegato titolo = q2.rowset.fields("NOMEFILE").value ' Per sicurezza non tocco direttamente il file, ma lo copio in cartella temporanea percorsocopia = Q95_PATH_TEMP + "\" + titolo system.IO.file.copy(percorsoreport,percorsocopia,true) qmail.MsgAttachment(titolo,percorsocopia) msg = "" ok = qmail.MsgSend(msg) if ok = false then WriteLog("Messaggio non inviato: " + msg) else Write_LogDoc(QWSess,"DW",CODDOC,2,"Messaggio con allegati zip e report inviato") end if end if CloseTable(q2) end if CloseTable(q3)