Visualizzazione dei risultati da 1 a 7 su 7

Discussione: [VB6]Lettura Email

  1. #1

    [VB6]Lettura Email

    Ciao a tutti,
    sto facendo un lettore di email utilizzando il winsock, sono arrivato al punto di autentificarmi, ricevere quante mail ci sono sul server, ma poi ho dei problemi nella lettura della mail, mi và in timeout (anche portando il valore a 300 secondi), se vado mediante telnet non succede, anche perchè le mail sono non più grandi di 50Kb.

    per attendere che arrivi la risposta ai comandi pop3 ho usato questa funzione.

    'RispostaSRV = "+OK"
    'intervall= 30
    Function WaitTime(RispostaSRV As String, Intervall As Integer) As Boolean
    Dim WaitSt As Date
    WaitSt = Now()
    While InStr(1, RespSRV, RispostaSRV, 1) < 1
    DoEvents
    If DateDiff("s", WaitSt, Now) > Intervall Then
    RespSRV = ""
    WaitTime = False
    Exit Function
    End If
    Wend
    'Registro l'ultima risposta del server in una variabile temporanea
    RespSRVTemp = RespSRV
    RespSRV = ""
    WaitTime = True
    End Function

    a volta mi stampa le prime due nel text box a volte solo 1 su 10 presenti sul server...qualcuno ha esperienza in queste cose e può aiutarmi con qualche consiglio sul come prelevare le mail senza incappare in timeout di lettura?

  2. #2
    risolto...una banalità, ma se non sai certe cose rimani intoppato.

    Ciao a tutti

  3. #3
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,465

    Moderazione

    Eventualmente posta la soluzione brevemente, così la discussione assume un senso proprio e chi si ritrova nella stessa situazione saprà già come risolverla.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  4. #4
    chiaramente il codice da me inserito era solo una parte che doveva mostrare il blocco del codice in cui mi sono fermato.
    La soluzione è stata quella di scrivere nei textbox solamente la risposta positiva o negativa e di inserire in file di testo i dati che via via ricevevo dal winsock.

  5. #5
    prima di passare il comando retr(lettura mail..vedere rfc 1939) ho impostato la proprietà tag del winsock = retr

    Private Sub Winsock_DataArrival(ByVal bytesTotal As Long)
    'assegno alla variabile pubblica in function il valore della risposta del server
    Winsock.GetData functions.RespSRV
    'Verifico se nella risposta esiste il +OK o no
    'Nel protocollo pop3 ogni risposta positiva vede come inizio la sigla "+OK"
    If Winsock.Tag = "RETR" Then
    Put #1, , functions.RespSRV
    'Essendo il tag del winsock settato a RETR, significa che sto ricevendo una mail
    'quindi devo attendere che sia presente nella stringa il valore: vbcrlf.vbcrlf
    'per sapere che la mail è arrivata al termine
    If InStr(functions.RespSRV, vbCrLf & "." & vbCrLf) Then
    'STringa presente, quindi la mail è terminata
    Close 1
    msgMail.Text = msgMail.Text & "-------------------------STOP(" & a & ")--------------------" & vbCrLf
    endmail = True
    Else
    'Stringa non presente, quindi sto ancora ricevendo la mail
    'functions.RespSRVTemp = functions.RespSRVTemp & functions.RespSRV
    endmail = False
    End If
    Else
    If Left(functions.RespSRV, 3) = "+OK" Then
    srvmsg.Text = srvmsg.Text & functions.RespSRV & vbCrLf
    Else
    srvmsgerr.Text = srvmsgerr.Text & functions.RespSRV & vbCrLf
    End If
    End If

  6. #6
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,465
    Ottimo.

    In futuro, ricordati di usare la formattazione [ CODE ] che consente di mantenere l'indentazione del codice su questo forum che normalmente viene persa con la formattazione.

    E' utile anche quando si pongono domande, poichè rende il codice più leggibile, soprattutto quando il listato è lungo.

    Ciao e alla prossima!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  7. #7
    ok.non mancherò

    ciao

    rincollo codice con tag

    codice:
    Private Sub Winsock_DataArrival(ByVal bytesTotal As Long)
    'assegno alla variabile pubblica in function il valore della risposta del server
    Winsock.GetData functions.RespSRV
    'Verifico se nella risposta esiste il +OK o no
    'Nel protocollo pop3 ogni risposta positiva vede come inizio la sigla "+OK"
    If Winsock.Tag = "RETR" Then
        Put #1, , functions.RespSRV
        'Essendo il tag del winsock settato a RETR, significa che sto ricevendo una mail
        'quindi devo attendere che sia presente nella stringa il valore: vbcrlf.vbcrlf
        'per sapere che la mail è arrivata al termine
        If InStr(functions.RespSRV, vbCrLf & "." & vbCrLf) Then
            'STringa presente, quindi la mail è terminata
            Close 1
            msgMail.Text = msgMail.Text & "-------------------------STOP(" & a & ")--------------------" & vbCrLf
            endmail = True
        Else
            'Stringa non presente, quindi sto ancora ricevendo la mail
            'functions.RespSRVTemp = functions.RespSRVTemp & functions.RespSRV
            endmail = False
        End If
    Else
        If Left(functions.RespSRV, 3) = "+OK" Then
            srvmsg.Text = srvmsg.Text & functions.RespSRV & vbCrLf
        Else
            srvmsgerr.Text = srvmsgerr.Text & functions.RespSRV & vbCrLf
        End If
    End If
    
        
    End Sub

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.