Newsgroup: it.comp.lang.visual-basic
Titolo: Mailer multifunzione :)

Ciauz a tutti, questa volta proprio non capisco come risolvere il problema.
Premetto che le ho provate un po' tutte e il codice che riporto sotto è solo
uno dei tanti che ho adottato.
Questo mailer dovrebbe mandare un determinato numero di mail (a scelta) ad
un certo account, solo che non funziona.... In alcuni tentativi col codice
diverso:
si fermava ad helo, altre volte a: start mail input.... e non vedeva il
punto, altre volte non si muoveva per niente... in questo codice si ferma a
ESMTP spoken here
Dim invio As String
Private Sub cmdsend_Click()
Winsock1.Connect Text1, 25
Label5.Caption = "Connesso"
ProgressBar1.Min = 1
ProgressBar1.Max = 100
ProgressBar1.Value = 1
Timer1.Enabled = True
invio = Chr(13) & Chr(10)
End Sub
Private Sub Form_Load()
Timer1.Enabled = False
End Sub
Private Sub Timer1_Timer()
Call Manda
Timer1.Enabled = False
End Sub
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Winsock1.GetData dati, vbString
Text5.Text = Text5.Text & dati
End Sub
Public Sub Manda()
Dim a, b, c, d, e As String, conta, numero As Integer
conta = 0
numero = Text7.Text
a = Text1.Text
b = Text2.Text
c = Text3.Text
d = Text6.Text
e = Text4.Text
start:
Winsock1.SendData "HELO " & a & invio
ProgressBar1.Value = 20
Sleep 2000
GoTo uno
uno:
conta = conta + 1
Winsock1.SendData "MAIL FROM:<" & b & ">" & invio
ProgressBar1.Value = 40
Sleep 500
Winsock1.SendData "RCPT TO:<" & c & ">" & invio
ProgressBar1.Value = 60
Sleep 500
Winsock1.SendData "DATA" & invio
Sleep 500
Winsock1.SendData "Subject: " & d & invio
Sleep 500
Winsock1.SendData "From: <" & b & ">" & invio
Sleep 500
Winsock1.SendData "To: <" & c & ">" & invio & invio
ProgressBar1.Value = 80
Sleep 500
Winsock1.SendData e & invio
Winsock1.SendData invio & "." & invio
ProgressBar1.Value = 100
If conta = numero Then GoTo fine
GoTo uno
fine:
Sleep 500
Winsock1.SendData "QUIT" & invio
End Sub
Private Sub Form_Unload(Cancel As Integer)
Winsock1.Close
End Sub

 conta = 0
Innanzitutto questa istruzione e' sbagliata. Infatti non e' equivalente,
come si potrebbe pensare, a quasta serie:
Dim a As String
Dim b As String
Dim c As String
Dim d As String
Dim e As String
Dim conta As Integer
Dim numero As Integer
ma bensi' a questa:
Dim a
Dim b
Dim c
Dim d
Dim e As String
Dim conta
Dim numero As Integer
dove quando il tipo e' omesso si sottintende Variant.
Per quanto rigurda gli errori che ti da' sono dovuti al fatto che
ha completamente sbagliato l'approcio al problema.
I dati li invii a intervalli regolari, ignorando cio' che ti viene
dato indietro dal server.
Il fatto e' che nessuno ti assicura, ad esempio, che mezzo secondo
dopo aver inviato il comando MAIL FROM il server sia pronto a ricevere
quello seguente.
L'approcio corretto e' il seguente.
Ti connetti.
Aspetti una risposta dal server.
Quando questa arriva, nel DataArival fai un select che a seconda di cio'
che ti arriva manda i comandi appropriati..
Conosci le RFC vero?
Se no le puoi scaricare dal sito 
www.ieft.org
, ti spiegano tutti i comandi
che puoi mandare al server e tutte le possibili risposte che questo ti
puo' dare. In particolare devi cercare la RFC che spiega il protocollo SMTP.
Come esempio puoi guardare il mio programma per leggere le news(vedi firma).
Questo si mette in contatto con un server news anziche' mail, ma il
concetto e' sempre quello.
-- 
Samuele Battarra
mail server: 
libero.it
, account: battarsa
prova il mio newsreader:
http://digilander.iol.it/battarsa/programmi/leggiminews.html

 ha scritto nel messaggio
news:_b417.9632$D03.3...@news.infostrada.it...


 ha scritto nel messaggio
news:_b417.9632$D03.3...@news.infostrada.it...


 
[cut]
In questo codice, dopo la connessione fai partire il timer.
Qundo questo scatta inizi l'invio dei comandi, quando il server
ti manda la prima risposta inizi l'invio dei dati veri e propri.
Questo metodo non puo' funzionare.
Devi fare cosi'.
Togli il timer dal programma che non serve, fa solo danni.
Ti connetti e aspetti la risposta dal server.
Quando il server risponde mandi il comando HELO.
Di nuovo aspetti la risposta dal server.
Quando il server risponde al comando HELO mandi il comando MAIL FROM.
Di nuovo aspetti la risposta dal server.
Quando il server risponde al comando MAIL FROM .... e via dicendo.
Quando il server risponde all'invio dei dati finali, puoi sconnettere
(o iniziare un nuovo ciclo).


 ha scritto nel messaggio
news:10j17.13452$D03.4...@news.infostrada.it...


 
Devi studiarti il MIME, definito nelle RFC 2045, 2046, 2047, 2048,
2049. Auguri!
Se pero' ti accontenti di poco potrebbe bastarti conoscere la
codifica base64.
