Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - invio automatico di mail con allegato
Forum - C# / VB.NET - invio automatico di mail con allegato

Avatar
xamm (Normal User)
Rookie


Messaggi: 24
Iscritto: 30/09/2015

Segnala al moderatore
Postato alle 12:09
Lunedì, 26/06/2023
Buongiorno a tutti,

la mia necessità sarebbe la seguente:

Ho una procedura che ogni giorno crea un file txt, lo rinomina in un determinato modo aggiungendo la data di elaborazione e lo deposita in una cartella di rete dove sono anche presenti tutti i file dei giorni precedenti.

Fin qui tutto ok.

Questi file depositati giornalmente nella cartella di rete, possono sia contenere record che essere vuoti.

Solo nel caso dovessero contenere dati, dovrebbe partire una mail a due indirizzi preimpostati con in allegato il file in oggetto.

devo partire dalla lettura del file giusto ?

Dim fileReader As String
fileReader = My.Computer.FileSystem.ReadAllText("C:\test.txt")
MsgBox(fileReader)

però il naming del file ogni giorno cambia ...

Grazie a tutti e buona giornata.

xamm




PM Quote
Avatar
Carlo (Member)
Guru


Messaggi: 1352
Iscritto: 29/01/2018

Segnala al moderatore
Postato alle 19:12
Lunedì, 26/06/2023
Con quale criterio il nome cambia?
Se i nomi iniziano tuti per test e poi contengono la data es:
test20230626.txt
test20230625.txt
test20230624.txt
test20230623.txt
In un ciclo puoi ricreare i nomi e se il file esiste caricarlo. Con questo metodo hai il controllo data/data sui files e caricare solo quelli con nomi validi oppure nel giusto range:
Codice sorgente - presumibilmente VB.NET

  1. Dim cartella As String = "\\server1\c\doc" ' tuo percorso di rete
  2. Oggi = Today ' data di partenza
  3. For testi = 0 To 10 ' ricerca di undici date
  4.         ' creazione del nome del file comprensivo del percorso di rete
  5.         Dim NomeFile As String = System.IO.Path.Combine(cartella, "test" & Oggi.Year.ToString("0000") & Oggi.Month.ToString("00") & Oggi.Day.ToString("00") & ".txt")
  6.         If System.IO.File.Exists(NomeFile) Then 'lettura solo se esiste
  7.             Dim testo As String = System.IO.File.ReadAllText(NomeFile)
  8.             MsgBox(testo)
  9.         Else
  10.             MsgBox("il file: " & NomeFile & " non esiste")
  11.         End If
  12.         Oggi = Oggi.AddDays(-1) ' decremento la data di un giorno
  13. Next



In alternativa puoi caricare tutti i files presenti nella cartella di rete e poi analizzare i nomi e decidere quali usare o meno.
Codice sorgente - presumibilmente VB.NET

  1. Dim cartella As String = "\\server1\c\doc" ' tuo percorso di rete
  2. For Each Files In My.Computer.FileSystem.GetFiles(cartella)
  3.         Dim testo As String = System.IO.File.ReadAllText(Files)
  4.         MsgBox(testo)
  5. Next


Ultima modifica effettuata da Carlo il 26/06/2023 alle 20:14


in programmazione tutto è permesso
PM Quote