+ Rispondi al messaggio
Pagina 1 di 2 12 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12

Posta elettronica-lettura troppo veloce

  1. #1
    L'avatar di sistemista
    sistemista non  in linea Topo di biblioteca
    Altro giro,altro problema.
    Come da un mio precedente post,ho creato un client per inviare/ricevere posta e funziona tutto bene per,come spesso succede,c' un ma...
    posto il codice per capire meglio.
    Con questo codice inizio a il download delle mail dal server gmail(la connessione gi avvenuta)
      For i = 1 To CInt(msgconteggio.Text)   ' il totale dei messaggi)
                Dgv.Rows.Add()                         ' aggiungo la riga al DataGridView
                msgstring = GetMessage(i)        ' chiamo la funzione per prelevare le mail
                msg = CreateFromText(msgstring)
                Dim parts As String() = msg._Date.Split(New Char() {","c})
                Dim splitData As String = parts(1)
                Dim currentDate As String = splitData
                Dim convertedDate As DateTime = Convert.ToDateTime(currentDate)
                msgdata = convertedDate.Day & "/" & convertedDate.Month & "/" & convertedDate.Year
                ' Dim splitpiu As String() = msgdata 'splitData.Split(New Char() {"+"c})
                '  msgdata = String.Format(msgdata, "dd/mm/aaaa")
                Dim substring As String = msgdata.Date.ToString.Substring(0, 10)
                Dgv.Item(0, i - 1).Value = substring 'splitpiu(0)
                Dgv.Item(1, i - 1).Value = msg._Subject
                Dgv.Item(2, i - 1).Value = msg._From
                Dgv.Item(3, i - 1).Value = msg._To
                Dgv.Item(4, i - 1).Value = i
                Dgv.Item(5, i - 1).Value = msg._Received
                TextBox3.AppendText(msg._Body & vbCrLf)
                MessageBox.Show("premi") 
            Next
    
    Nome:   scaricaposta.JPG
Visite:  43
Grandezza:  36.7 KB
    Nell'evidenziato in rosso ho dovuto metterlo altrimenti non mi f vedere le mail scaricate.
    Questa la routine per scaricare le mail
     Public Function GetMessage(ByVal msgindex As Long) As String
            Dim tmpString As String
            Dim prova As String = String.Empty
            Dim Data As String
            Dim SzData() As Byte
            Dim msg As String = String.Empty
            Try
                Data = "RETR " & msgindex & vbCrLf
                SzData = System.Text.Encoding.GetEncoding(1252).GetBytes(Data)
                StreamSSL.Write(SzData, 0, SzData.Length)
                RdStrm = New StreamReader(StreamSSL)
                tmpString = RdStrm.ReadLine()
                If tmpString.Substring(0, 4) <> "-ERR" Then
                    While (tmpString <> ".")
                        msg = msg & tmpString & vbCrLf
                        tmpString = RdStrm.ReadLine
                    End While
                End If
            Catch exc As InvalidOperationException
                MessageBox.Show("Recupero del Messaggio Fallito: " & vbCrLf & Err.ToString())
            End Try
            Return msg
        End Function
    
    dall'immagine si vede le mail scaricate con la messagebox attiva,se non la metto,scarica tutto ma non vedo le mail
    Nome:   posta scaricata.JPG
Visite:  45
Grandezza:  18.0 KB
    come si pu notare la barra verticale della DatagridView quasi in cima il che vuol dire ha scaricato le mail ma non si vedono.
    Come risolvo?ho provato con la funzione threading.thread.sleep(1000) alla fine del ciclo for ma non succede niente.
    Altre possibili soluzioni?
    ℹ️ Leggi di pi su sistemista ...

  2. #2
    L'avatar di SirJo
    SirJo non  in linea Scolaretto
    prova a togliere le righe:
    Dgv.Rows.Add()
    Dgv.Item(0, i - 1).Value = substring 'splitpiu(0)
    Dgv.Item(1, i - 1).Value = msg._Subject
    Dgv.Item(2, i - 1).Value = msg._From
    Dgv.Item(3, i - 1).Value = msg._To
    Dgv.Item(4, i - 1).Value = i
    Dgv.Item(5, i - 1).Value = msg._Received
    
    e mettere una riga sola:
    Dgv.Rows.Add(substring, msg._Subject, msg._From, msg._To, i, msg._Received)
    

  3. #3
    L'avatar di sistemista
    sistemista non  in linea Topo di biblioteca
    Quote Originariamente inviato da SirJo Visualizza il messaggio
    prova a togliere le righe:
    Dgv.Rows.Add()
    Dgv.Item(0, i - 1).Value = substring 'splitpiu(0)
    Dgv.Item(1, i - 1).Value = msg._Subject
    Dgv.Item(2, i - 1).Value = msg._From
    Dgv.Item(3, i - 1).Value = msg._To
    Dgv.Item(4, i - 1).Value = i
    Dgv.Item(5, i - 1).Value = msg._Received
    
    e mettere una riga sola:
    Dgv.Rows.Add(substring, msg._Subject, msg._From, msg._To, i, msg._Received)
    
    Niente da fare,stesso problema.
    ℹ️ Leggi di pi su sistemista ...

  4. #4
    L'avatar di SirJo
    SirJo non  in linea Scolaretto
    direi che a questo punto devi capire se quello che non funziona l'inserimento dei dati nella DGV oppure se non funziona la routine GetMessage()

    Direi di provare a togliere tutta la parte di inserimento nella DGV e scrivere invece il risultato della GetMessage() su di un oggetto StringBuilder e alla fine del ciclo FOR scrivere l'oggetto SringBuilder su di un file TXT in modo da poterlo controllare e verificare.

  5. #5
    Hai provato ad eseguire un refresh del controllo all'uscita del ciclo ?

    Dgv.Refresh()
    ℹ️ Leggi di pi su Fix ...

  6. #6
    L'avatar di gibra
    gibra non  in linea Very Important Person
    Quote Originariamente inviato da sistemista Visualizza il messaggio
    Nell'evidenziato in rosso ho dovuto metterlo altrimenti non mi f vedere le mail scaricate.
    Ma a quale 'evidenziato rosso' ti riferisci? Io di rosso non vedo nulla...


    Quote Originariamente inviato da sistemista Visualizza il messaggio
    ho provato con la funzione threading.thread.sleep(1000) alla fine del ciclo
    Perch? Piuttosto metterei un DoEvents, hai provato?
    ℹ️ Leggi di pi su gibra ...

  7. #7
    L'avatar di sistemista
    sistemista non  in linea Topo di biblioteca
    Quote Originariamente inviato da Fix Visualizza il messaggio
    Hai provato ad eseguire un refresh del controllo all'uscita del ciclo ?

    Dgv.Refresh()
    Non ho provato,dici dopo il ciclo for?
    ℹ️ Leggi di pi su sistemista ...

  8. #8
    Si, dopo il ciclo.
    ℹ️ Leggi di pi su Fix ...

  9. #9
    L'avatar di sistemista
    sistemista non  in linea Topo di biblioteca
    Quote Originariamente inviato da Fix Visualizza il messaggio
    Si, dopo il ciclo.
    Aggiornamento:
    Non c' bisogno di aggiornare la DataGridView in quanto ho capito che il problema nella routine
    Getmessage,infatti dopo la fine del ciclo for ho inserito un messagebox con avviso ma tardava a presentare il messaggio,quindi,ho capito che ancora stava elaborando,infatti,dopo circa 3 minuti la DataGridView si popolata correttamente con tutte le mail.
    Esiste un altro metodo per ovviare a questo inconveniente di disastroso ritardo?
    ℹ️ Leggi di pi su sistemista ...

  10. #10
    Se la messagebox dentro al ciclo funziona, e ti permette di visualizzare i messaggi come hai scritto, allora verificherei l’ultimo elemento “i” che tenti di recuperare con RETR

    Se “i” non esiste, possibile che la chiamata resti in attesa e poi sia generato un errore di timeout ?

    Nel codice GetMessage tu scarti i messaggi “-ERR”, quindi magari non ti accorgi che c’ un errore.

    Fai un po’ di debug passo passo.
    ℹ️ Leggi di pi su Fix ...

+ Rispondi al messaggio
Pagina 1 di 2 12 ultimoultimo

Potrebbero interessarti anche ...

  1. Risposte: 6
    Ultimo Post: 14-07-2018, 15:02
  2. Posta Elettronica Bloccata
    Da AlbertoM nel forum Pausa caff
    Risposte: 4
    Ultimo Post: 05-10-2013, 13:48
  3. Refresh pagina troppo veloce su IE
    Da acer1629 nel forum Adobe Flash, ActionScript
    Risposte: 0
    Ultimo Post: 05-02-2011, 01:30
  4. PEC (Posta Elettronica Certificata)
    Da artemis79 nel forum Pausa caff
    Risposte: 1
    Ultimo Post: 08-09-2010, 11:44
  5. Posta elettronica con Ubuntu
    Da ceklo nel forum Tutto Linux
    Risposte: 33
    Ultimo Post: 18-01-2010, 01:58