none
Invio Mail RRS feed

  • 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


    giovedì 12 febbraio 2015 12:34

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

    giovedì 12 febbraio 2015 15:09
    Moderatore

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

    giovedì 12 febbraio 2015 15:09
    Moderatore
  • Ok perfetto era quello che mi serviva, scusate per l'errore grossolano ma su internet avevo trovato la maggior parte esempi di invio di una mail dove non vi è presente il codice dispose.

    Grazie mille!

    mercoledì 18 febbraio 2015 15:23