Newsgroup: it.comp.lang.visual-basic
Titolo: VB vs Telnet...

Utilizzo Netmanage Winsock che mi simula telnet....
il programma sembra funzionare ma le email nn arrivano..
Ecco il codice spero che mi aiutiate...
potrebbe essere incriminata una delle due procedure....
Grz!!!
Private Sub Delay()
    pausa = 6
    inizia = Timer
    Do While Timer < inizia & pausa
        DoEvents
        If Ricevi <> "" Then GoTo fuori
    Loop
fuori:
End Sub
Private Sub Spedisci()
    TCP.Connect "mail.*****.it", 25
    Ricevi = "": Delay
    TCP.SendData "HELO NIK" & vbCrLf
    Ricevi = "": Delay
    TCP.SendData "MAIL FROM: *******" & vbCrLf
    Ricevi = "": Delay
    TCP.SendData "RCPT TO: *******" & vbCrLf
    Ricevi = "": Delay
    TCP.SendData "DATA" & vbCrLf
    Ricevi = "": Delay
    TCP.SendData "Subject: PROVA " & vbCrLf & vbCrLf & "TE LO MANDO IO " &
vbCrLf & "." & vbCrLf
    Ricevi = "": Delay
    TCP.Close
End Sub

     TCP.SendData "RCPT TO: *******" & vbCrLf
Togli lo spazio dopo i due punti.
E leggi bene la RFC, perchè non è detto che la tua procedura vada bene con
tutti i server (HELO<>EHLO).
Ciao
Alberto

 E leggi bene la RFC, perchè non è detto che la tua procedura vada bene con
tutti i server (HELO<>EHLO).
Non ho capito scusa... devo scrivere HELO o EHLO???
Ecco il programma...
Dim Ricevi As String
Private Sub cmdSend_Click()
    Spedisci
End Sub
Private Sub TCP_DataArrival(ByVal bytesTotal As Long)
    TCP.GetData dalserver, vbString
    Ricevi = dalserver
    txtServerMessages.Text = txtServerMessages.Text & dalserver
End Sub
Private Sub Delay()
    pausa = 6
    inizia = Timer
    Do While Timer < inizia & pausa
        DoEvents
        If Ricevi <> "" Then GoTo fuori
    Loop
fuori:
End Sub
Private Sub Spedisci()
    TCP.Connect "mail.*****.it", 25
    Ricevi = "": Delay
    TCP.SendData "HELO NIK" & vbCrLf
    Ricevi = "": Delay
    TCP.SendData "MAIL FROM:*****" & vbCrLf
    Ricevi = "": Delay
    TCP.SendData "RCPT TO:*****" & vbCrLf


ecco quello che mi dice il sever quando spedisco...
220 mail.****.it IMS SMTP Receiver Version 0.81 Ready
250 OK
250 ****@
xxxx.it
 OK
250 ****@
xxxx.it
 OK
354 Ready for data
250 Message received OK

     TCP.SendData "RCPT TO:*****" & vbCrLf
Va molto meglio...
Alberto

 250 ****@
xxxx.it
 OK
Ma questo, arriva dopo che hai tolto lo spazio, o era uguale anche prima?
Ciao
Alberto

> Scusa, perchè non credi?
Perchè mi spara errore! e nn do il tempo al server di rispondere ke già gli
sparo un'altro comando...
Dice...
"Errore di runtime 1005"
"Wrong Protocol or connection state for the requested transaction or
request"
E lo da sulla seconda riga di codice,segno che nn gli arriva la risposta del
server...
penso sia quello..
non funziona cmq il codice corretto

 server...
??????????????????????????????????????
Ma è proprio perchè gli arriva la risposta che avviene l'errore!!!!
Se non gli arrivasse niente, faresti trascorrere il timeout, e, pur
rallentando l'applicazione, dovrebbe funzionare
Io metterei:
    Ricevi = Ricevi & dalserver
anzichè
    Ricevi = dalserver
e uscirei dal loop:
        If instr(Ricevi,vbcr) > 0 Then GoTo fuori
anzichè
        If Ricevi <> "" Then GoTo fuori
In realtà io la cosa l'avrei fatta in modo diverso, ma visto che ormai sei
partito su questa strada, cerchiamo di mettere una pezza.
Ciao
Alberto

 In realtà io la cosa l'avrei fatta in modo diverso
Cercavo qualcuno che mi desse una dritta.... come l'avresti fatto?
sto impazzendo tra i controlli + svariati ke esistano...mapi,winsock...
Che mi consigli?
Che mi consigliate?

 L'ho messo e l'errore lo da sempre..
Impossibile.
A questo punto mi viene la domanda pių stupida del mondo (non offenderti...)
    TCP.Connect "mail.*****.it", 25
    TCP.SendData "MAIL FROM:*****" & vbCrLf
    TCP.SendData "RCPT TO:*****" & vbCrLf
Al posto degli asterischi (*****), hai messo dei valori validi?
Prova a postarmi l'indirizzo del server, cosė provo da qui col telnet.
Ciao
Alberto

Ti mando una mail???

 Ti mando una mail???
Possibilmente con tutto il codice (esattamente quello che usi, non con gli
asterischi).
Ciao
Alberto

 Impossibile.
Forse....
C'è un problema nel tuo codice.
Non gestisci il completamento della connessione (che è asincrona), per cui
potresti trovarti nel data_arrival con TCP chiuso.
Ma questo, al limite lo potresti avere a partire dalla seconda mail che
cerchi di inviare, mentre tu hai problemi anche al primo giro (altrimenti
l'avresti detto).
Magari quando mi arriva la tua mail ci dò un'occhiata.
Ciao
Alberto

 l'avresti detto).
Gią! Bravo!
Ci hai dato un'occhiata?


Adesso sì.
Ma resto della mia idea.
L'errore te lo avrebbe dovuto dare al secondo invio.
Ho aggiunto la gestione della connessione asincrona, e adesso va benissimo
anche al secondo invio.
Inoltre adesso gestisce anche l'EHLO.
Ciao
Alberto
PS: Non c'era Option Explicit. Molte cose ti funzionavano per puro culo....
Option Explicit
Dim Ricevi As String
Dim Pausa As Double
Dim Inizia As Double
Dim Connesso As Boolean
Private Sub TCP_Connect()
Connesso = True
End Sub
Private Sub TCP_DataArrival(ByVal bytesTotal As Long)
    Dim dalserver As String
    If Not Connesso Then Exit Sub
    TCP.GetData dalserver, vbString
    Ricevi = Ricevi & dalserver
    txtServerMessages.Text = txtServerMessages.Text & dalserver
    txtServerMessages.Refresh
End Sub
Private Sub Delay_Connect()
    Pausa = 6
    Inizia = Timer
    Do While Timer < Inizia + Pausa
        DoEvents
        If Connesso Then GoTo fuori
    Loop
fuori:
End Sub
Private Sub Delay()
    Pausa = 6
    Inizia = Timer
    Do While Timer < Inizia + Pausa
        DoEvents
        If InStr(Ricevi, vbCrLf) > 0 Then GoTo fuori
    Loop
fuori:
End Sub
Private Sub Spedisci()
Connesso = False
    txtServerMessages.Text = vbNullString
    txtServerMessages.Refresh
    TCP.Connect "127.0.0.1", 25
    Ricevi = "": Delay_Connect
    If Not Connesso Then
        TCP.Close
        Exit Sub
    End If
    TCP.SendData "HELO NIK" & vbCrLf
    Ricevi = "": Delay
    If Left(Ricevi, 1) = "5" Then
        TCP.SendData "EHLO NIK" & vbCrLf
        Ricevi = "": Delay
    End If
    TCP.SendData "MAIL 
FROM:nicolan...@vizzavi.it
" & vbCrLf
    Ricevi = "": Delay
    TCP.SendData "RCPT 
TO:nicolan...@vizzavi.it
" & vbCrLf
    Ricevi = "": Delay
    TCP.SendData "DATA" & vbCrLf
    Ricevi = "": Delay
    TCP.SendData "Subject:PROVA " & vbCrLf & vbCrLf & "TE LO MANDO IO " &
vbCrLf & "." & vbCrLf
    Ricevi = "": Delay
    TCP.SendData "QUIT" & vbCrLf
    Ricevi = "": Delay
    TCP.Close
    Ricevi = "": Delay
End Sub
Private Sub cmdDisconnetti_Click()
    TCP.Close
End Sub



Figurati, di niente.
Ciao
Alberto

> > Adesso funziona.
troppo bello per essere vero....
non arriva nulla!!!!

 non arriva nulla!!!!
A che server SMTP ti sei connesso (verifica nel codice)?
Ciao
Alberto

> A che server SMTP ti sei connesso (verifica nel codice)?
L'ho cambiato il codice 127.0.0.1 e ho messo quello della mia azienda dove
lavoro...
Ecco il risultato ma pare tutto ok...
220 mail.*****.it IMS SMTP Receiver Version 0.81 Ready
250 OK
250 *****@****.it OK
250 ****@****.it OK
354 Ready for data
250 Message received OK
221 mail.*****.it closing

L'ho cambiato il codice 127.0.0.1 e ho messo quello della mia azienda dove
lavoro...
Ecco il risultato ma pare tutto ok...
220 mail.*****.it IMS SMTP Receiver Version 0.81 Ready
250 OK
250 *****@****.it OK
250 ****@****.it OK
354 Ready for data
250 Message received OK
221 mail.*****.it closing
ma mail nn ne arrivano!!!
come mai? tu ke faresti al posto mio???

 ha scritto nel messaggio
news:aqdu2f$93tka$1...@ID-167119.news.dfncis.de...

Quella che riporti è una sequenza corretta, che dimostra che il server SMTP
ha accettato il messaggio e se ne è fatto carico.
Se non arriva, l'errore può essere in uno dei due indirizzi, mittente o
destinatario. Prova a collegarti direttamente col mail server di vizzavi,
dopo aver verificato lettera per lettera gli indirizzi (in teoria il
mittente può anche essere inventato, ma non vorrei che il tuo SMTP facesse
un controllo).
Col codice che ti ho dato, io mi sono collegato e ti ho mandato delle mail
di prova.
Dal log qui sotto, è chiaro che i messaggi che ti ho mandato hanno già
superato il server SMTP e sono stati ricevuti dal tuo POP, per cui ti
dovrebbero essere arrivati.
2002-11-07 11:54:13 
fmis401.omnitel.it
 OutboundConnectionResponse SMTPSVC1
PV-LAPTOP3 - 25 - - 250+2.0.0+gA7BohG26104+Message+accepted+for+delivery 0 0
52 0 20740 SMTP - - - -
Se li hai ricevuti, sappi che l'invio è avvenuto esattamente col codice che
ho postato, pari pari.
Ciao
Alberto

    TCP.Connect "127.0.0.1", 25
con il mio server smtp
Tutto OK ma nn ricevo nulla!!!
ASSURDO!

 ho postato, pari pari.
Grazie Albe ho ricevuto le mail ma il problema rimane c.....o! ;(

Figurati che casino devo fare col pop3 dopo...