Principale utente con più risposte
Invio Mail

Domanda
-
Buongiorno,
ho un problema, devo inviare più mail con allegati diversi a diversi destinatari.
Incollo parte del mio programma ed espongo il mio problema, io leggo da un file il percorso dell'allegato e la mail.
Questo file è così strutturato ( faccio un esempio ) :
c:\Mail\pippo.pdf
pippo@esempio.com
c:\Mail\pluto.pdf
altra mail..
Con il codice sotto riesco ad inviare correttamente le mail con il suo allegato ma vorrei fare una cosa in più, ovvero una volta inviata la mail spostare l'allegato in un altra cartella. Quando ho provato a scrivere il codice per lo spostamento il programma andava in errore perché risultava aperto un file, ho verificato che process Explorer che effettivamente la cartella dove ci sono gli allegati rimane attiva fino a che non chiudo il programma.
Come faccio per dire al programma di chiudere la connessione con quella cartella?
Se non sono stato chiaro chiedete pure.
For Each sLine In arrText 'Questo controllo serve per capire le righe pari e dispari in modo tale da prendere correttamente quando la riga è la posizione dove si trova l'allegato e quando la riga invece è un indirizzo riga = riga + 1 If riga Mod 2 = 0 Then controllo = 0 Else controllo = 1 End If If controllo = 1 Then allegato = sLine Dim attachment As New System.Net.Mail.Attachment(sLine) mail = New MailMessage mail.From = New MailAddress(ComboBox1.Text) mail.Attachments.Add(attachment) ElseIf controllo = 0 And sLine.Contains("@") Then mail.To.Add(sLine) mail.Subject = "Invio Avviso" mail.Body = "Gentile Cliente, in allegato le inviamo l'avviso di Fattura." smtp.UseDefaultCredentials = True smtp.Send(mail) cont = cont + 1 mailinv = sLine b = Format(System.DateTime.Now, "yyyyMMdd_HHmm_") unione = b + "Inviato l'allegato " + allegato + "alla mail " + mailinv + ";" & vbCrLf My.Computer.FileSystem.WriteAllText("c:\Invio Documenti\Log\" & a & "_log.txt", unione, True) End If Next
- Modificato Daniele 1987 giovedì 12 febbraio 2015 12:49
Risposte
-
Buongiorno,
proverei, posteriormente all'invio della mail, a liberare le risorse impegnate dall'oggetto MailMessage tramite il suo metodo Dispose(). In seguito a ciò, dovrebbe essere possibile spostare il file, non più bloccato.
Puoi provare a modificare il tuo codice in un modo che segua questa traccia, e farci sapere?
Dim mail As New System.Net.Mail.MailMessage() ' TO DO : operazioni di invio, attach, ecc.ecc. ' Chiamo metodo Dispose() per liberare le risorse legate al MailMessage mail.Dispose() ' Sposto un file da un path ad un altro IO.File.Move(path_origine, path_destinazione)
Buon lavoro
Emiliano Musso // Microsoft MVP .NET
- Proposto come risposta Renato Marzaro []Moderator domenica 15 febbraio 2015 11:05
- Contrassegnato come risposta Daniele 1987 mercoledì 18 febbraio 2015 15:21
- Contrassegno come risposta annullato Daniele 1987 mercoledì 18 febbraio 2015 15:21
- Contrassegnato come risposta Renato Marzaro []Moderator venerdì 20 febbraio 2015 09:07
Tutte le risposte
-
Buongiorno,
proverei, posteriormente all'invio della mail, a liberare le risorse impegnate dall'oggetto MailMessage tramite il suo metodo Dispose(). In seguito a ciò, dovrebbe essere possibile spostare il file, non più bloccato.
Puoi provare a modificare il tuo codice in un modo che segua questa traccia, e farci sapere?
Dim mail As New System.Net.Mail.MailMessage() ' TO DO : operazioni di invio, attach, ecc.ecc. ' Chiamo metodo Dispose() per liberare le risorse legate al MailMessage mail.Dispose() ' Sposto un file da un path ad un altro IO.File.Move(path_origine, path_destinazione)
Buon lavoro
Emiliano Musso // Microsoft MVP .NET
- Proposto come risposta Renato Marzaro []Moderator domenica 15 febbraio 2015 11:05
- Contrassegnato come risposta Daniele 1987 mercoledì 18 febbraio 2015 15:21
- Contrassegno come risposta annullato Daniele 1987 mercoledì 18 febbraio 2015 15:21
- Contrassegnato come risposta Renato Marzaro []Moderator venerdì 20 febbraio 2015 09:07
-