Problema connesso agli allegali alle email

di il
1 risposte

Problema connesso agli allegali alle email

Buonasera a tutti.
Come al solito...ho bisogno del vs. aiuto, che è per me è sempre stato risolutivo.
Ho questo codice, che -come si può constatare- acquisisce le email ed i suoi allegati.
Il mio problema è connesso agli allegati.
Mi spiego : acquisisco per ogni mail gli (eventuali) allegati (che salvo in una cartella \inbox\allegati) e per ciascuno di essi creo un bottone per visualizzare il corrispondente allegato.
Ora, supponiamo che si creino 3 bottoni relativo alla mail X.
Passo ad altro messaggio : i 3 bottoni non vengono sostituiti ed anzi se il nuovo messaggio ha un allegato esso non viene acquisito.
Come posso "distruggere" i 3 bottoni, visto che dispose non mi da il risultato atteso?
Grazie, grazie mille.

    Private Sub DataGridView1_CellContentClick(sender As Object, e As DataGridViewCellEventArgs) Handles dgv.CellContentClick
        AttachFile.Clear()

        If e.ColumnIndex = 0 Then
            'In base all'elemento selezionato, carichiamo in memoria il file eml 
            Dim indice As Integer = e.RowIndex
            Dim oMail As New EAGetMail.Mail("Tryit")
            Dim nomeEml As String = Application.StartupPath & "\Inbox\" & dgv.Rows(indice).Cells(4).Value
            Try
                oMail.Load(nomeEml, False)
            Catch ex As Exception
                MsgBox("Il file eml non è stato trovato")
                Exit Sub
            End Try


            ' decodifica il file winmail.dat (TNEF) , che si trova alla fine di ogni mail
            oMail.DecodeTNEF()

            DataMsg.Text = oMail.SentDate
            DaMsg.Text = Replace(oMail.From.ToString, """", "")
            oggettoMsg.Text = oMail.Subject.ToString
            Dim testo As String = oMail.HtmlBody


            Dim atts() As EAGetMail.Attachment = oMail.Attachments 'numero allegati
            Dim tempFolder As String = Application.StartupPath & "\inbox\allegati\"
            Dim count As Integer = atts.Length
            If (Not System.IO.Directory.Exists(tempFolder)) Then
                System.IO.Directory.CreateDirectory(tempFolder)
            End If

            For i As Integer = 0 To count - 1
                Dim att As EAGetMail.Attachment = atts(i)       'att contiene il nome del file allegato
                Dim attname As String = String.Format("{0}\{1}", tempFolder, att.Name)  'contiente il nome del file con il percorso in cui deve essere copiato
                att.SaveAs(attname, True)   'salva il nome del file in \inbox\allegati

                'acquisiamo in attachFile i nomi con i percorsi degli allegati
                AttachFile.Add(attname)
            Next
            contatore += 1
            My.Computer.FileSystem.WriteAllText(Application.StartupPath & "\inbox\testo" & contatore.ToString & ".html", testo, False)
            Dim nomeFileHtml As String = Application.StartupPath & "\inbox\testo" & contatore.ToString & ".html" 'nomeEml
            url.Text = nomeFileHtml
            wv.Source = New Uri(url.Text)

        End If

        'ora dobbiamo visualizzare i file allegati con i relativi links
        If AttachFile.Count > 0 Then
            Dim btn As Button
            Dim asseY As Integer = 160
            Dim asseX As Integer = 100
            For x = 0 To AttachFile.Count - 1
                btn = New Button()
                btn.Name = "btn" & x.ToString
                SplitContainer1.Panel2.Controls.Add(btn)
                btn.Text = Path.GetFileName(AttachFile.Item(x))
                btn.Tag = AttachFile.Item(x)
                btn.Location = New Point(asseX, asseY)
                AddHandler btn.Click, AddressOf btn_click
                asseX += btn.Width + 20
            Next
        End If
    End Sub

1 Risposte

  • Re: Problema connesso agli allegali alle email

    RISOLTO

    adottato questo codice, che mi ha risolto:

                'ora dobbiamo visualizzare i file allegati con i relativi links
    
                '
                If AttachFile.Count > 0 Then
                    If Not btn Is Nothing Then
                        SplitContainer1.Panel2.Controls.Remove(btn)
                    End If
    
                    Dim asseY As Integer = 160
                    Dim asseX As Integer = 100
                    For x = 0 To AttachFile.Count - 1
    
                        btn = New Button()
                        btn.Name = "btn" & x.ToString
                        SplitContainer1.Panel2.Controls.Add(btn)
                        btn.Text = Path.GetFileName(AttachFile.Item(x))
                        btn.Location = New Point(asseX, asseY)
                        AddHandler btn.Click, AddressOf btn_click
                        asseX += btn.Width + 20
                    Next
                Else
                    SplitContainer1.Panel2.Controls.Remove(btn)
                End If
                Me.ResumeLayout()
            End If
Devi accedere o registrarti per scrivere nel forum
1 risposte