|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Jul 2001
Messaggi: 367
|
Invio email
Ciao,
Vorrei chiedervi se potreste aiutarmi ad risolvere un grosso problema: Praticamente in VB o una pagina dalla quale invio email con allegato un file utilizzando il componente WINSOCK. Fin quà tutto ok, visto che riesco ad inviare l'email tranquillamente. Il problema si è presentato dovendo usare lo stesso programma su un pc dotato di connessione ADSL, per la quale per l'invio delle email occorre settare anche i parametri "AUTENTICAZIONE DEL SERVER NECESSARIA" Idem quella contenuta in OUTLOOK dove successivamente dovranno essere impostati nome account e password forniti dal provider. Praticamente il programma non mi dà nessun errore, ma le email inviati non arrivano mai a destinazione visto che il provider richiede che per la posta in uscita siano impostati i parametri come sopra dicevo. Per favore, qualcuno di voi sà come poter impostare al WINSOCK questi parametri? Oppure se qualcuno di voi conosca qualche altro componente per l'invio di email con annesso allegato che mi possa suggerire, anche se preferirei risolvere con WINSOCK visto che cio tutto già fatto. Spero che mi possiate aiutare, perchè mi trovo abbastanza incasinata. Ciao, Carmen |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Con Winsock di dovresti essere fatta tutto il protocollo per SMTP per inviare una email... Cambia soltanto nella prima parte dove l'informazione su username e password viene inviata codificata in base 64...
Dovresti trovare qualcosa a riguardo qui: http://www.faqs.org/rfcs/rfc2821.html |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Jul 2001
Messaggi: 367
|
Ciao. Ti invio il progetto così magari se puoi le dai un'occhiata che forse e più chiaro.
Ciao. |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Ora sinceramente non posso metterci le mani...
http://www.technoids.org/saslmech.html#appB L'autenticazione è all'appendice B... Il client deve inviare: AUTH LOGIN Successivamente alla risposta del server deve inviare lo username codificato in Base64... Dopo la risposta del server deve inviare la password codificata in base64... Se è andata bene riceve un reply del tipo 235... Tutto questo va messo subito dopo questa riga (prima di HELO): 'il programma si 'presenta' al server inviando il proprio IP address Per l'algortimo di codifica Base64 ci dovrebbe essere molto in rete...avevio postato tempo fa un Encode/Decode ma non mi riesce trovarlo... |
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Aug 2002
Messaggi: 581
|
Mi ero avventurato nello studio del protocollo SMTP(Simple Mail Transfer Protocol ed e' descritto nell'RFC 821 (vedi sito "The Internet Engineering Task Force" all'indirizzo http://www.ietf.org in particolare qui : http://www.ietf.org/rfc/rfc0821.txt?number=821) per inviare email con un pgm in C tramite la libreria winsock... un disastro.
Mi sono bloccato proprio sull'autenticazione. Ho risolto, devo dire brillantemente in VB, utilizzando i componenti Microsoft MAPI Controls. Ecco il mio semplicissimo listato che invia email con uno o piu' allegati. Anche con connessione ADSL. Ovviamente utilizza utente e password nonche' parametri del server definiti nel mio client di posta predefinito che e' outlook Exsperss. Nel Form ho inserito i due controlli MAPISession e MAPIMessages Codice:
Option Explicit
Dim fso As New FileSystemObject
Dim path1 As String
Private Sub Form_Load()
Dim i As Integer
Dim ff As Boolean
i = 0
ff = False
Do While Not ff
i = i + 1
path1 = "e:\vipgmc\intraday_web\pagina" & i & ".html"
If fso.FileExists(path1) _
Then
' inizio istruzioni per invio email ----------
MAPISession1.DownLoadMail = False
MAPISession1.SignOn
MAPIMessages1.SessionID = MAPISession1.SessionID
MAPIMessages1.MsgIndex = -1
MAPIMessages1.RecipAddress = "[email protected]"
MAPIMessages1.MsgSubject = "quotazioni "
MAPIMessages1.AttachmentPathName = path1
MAPIMessages1.Send
MAPISession1.SignOff
' fine istruzioni per invio email ----------
Else
ff = True
End If
Loop
'fine programma
End
End Sub
|
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Jul 2001
Messaggi: 367
|
Ciao Cionci;
O dato un'occhiata al link che mi segnalavi, però al riguardo non sono molto preparata, per cui devo dire che mi viene alquanto complicato riuscire ad mettere insieme le parti di codice mancante. Non vorrei sembrarti troppo invadente, ma spero che riuscirai ad trovare un frammento del tuo tempo per potermi magari postarmi tù stesso il frammento di codice mancante... Io intanto cercherò di capirci qualcosa.... A presto, e grazie. Carmen |
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Ecco qua...
Permette di inviare se è presente l'autenticazione (devi mettere username e password), ma non mi funziona con gli attachment... |
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Jul 2001
Messaggi: 367
|
Ciao.
Ti ringrazio tantissimo per il tuo prezziosissimo aiuto. Ancora non lo provato su una connessione ADSL, lo farò nel pomeriggio e ti faccio sapere se tutto OK! L'allegato non lo mandava perchè nella cartella la dove si trova il programma bisogna che ci sia una cartella di nome Files Ancora grazie e a presto. Carmen |
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: Jul 2001
Messaggi: 367
|
Tutto OK! O provato il tutto anche con la connessione ADSL e funziona perfettamente.
Avrei da chiederti un'ultimo favore qualora fosse possibile. Sarebbe possibile aggiungere una barra di progressione la quale darebbe l'idea dello stato di avanzamento dell'operazione? un po' come outlook quando si invia una email. La cosa sarebbe utile quando l'allegato abbia delle dimensioni rilevanti, per cui il trascorrere di qualche minuto per l'invio del messaggio potrebbe indurre al fatto che non stia succedendo nulla. Notavo che winsock è dotato dell'evento "SendProgress", purtroppo non so' come utilizzarlo. Non so' se magari ai qualche chicca da postarmi su cio'. Ciao. Carmen |
|
|
|
|
|
#10 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Per l'invio di una semplice email non occupa molto tempo...magari il problema è l'attachment...
Codice:
uuEncodeToFile "x.uue", logoFile Open "x.uue" For Input As 10 While EOF(10) = False Line Input #10, l$ OKToSend = False WS(1).SendData l$ & Chr$(13) & Chr$(10) While OKToSend = False: DoEvents: Wend Devi fare una cosa del genere: Codice:
uuEncodeToFile "x.uue", logoFile passo = fsize / 100 parziale = 0 avanzamento = 0 'questa è la progress bar Open "x.uue" For Input As 10 While EOF(10) = False Line Input #10, l$ parziale = parziale + grandezza di l$ + 2 avanzamento = Int(parziale / passo) OKToSend = False WS(1).SendData l$ & Chr$(13) & Chr$(10) While OKToSend = False: DoEvents: Wend |
|
|
|
|
|
#11 |
|
Senior Member
Iscritto dal: Jul 2001
Messaggi: 367
|
Ciao, provando il codice che mi ai postato, devo dire che funziona e non funziona.
Ti spiego: Per far funzionare la ProgressBar dovrei settare il suo valore Max "ProgressBar.Max = xxx"; su questa riga "avanzamento = Int(parziale / passo)" mi da un errore, funziona se la lascio così "avanzamento = Int(parziale)" questa riga "parziale = parziale + grandezza di l$ + 2" la dovrei forse scrivere così? "parziale = parziale + len(l$) + 2" Ciao |
|
|
|
|
|
#12 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Infatti il mio non era codice VB, ma pseudocodice...
Comunque mi sono scordato di dirti che fsize è la grandezza del file in Kb...da determinare in qualsiasi modo ti riesca... Comunque strano che non ti funzioni... Hai definito "passo" ? "avanzamento" è la progressbar... Devi settare il max a 100...ed il valore dell'avanzamento della progressbar al valore che ho dato ad avanzamento... Credo che per la grandezza di l$ vada bene così...non sono sicuro...non programmo in VB Ultima modifica di cionci : 24-04-2004 alle 14:04. |
|
|
|
|
|
#13 |
|
Senior Member
Iscritto dal: Jul 2001
Messaggi: 367
|
Accidentaccio! Non và. o impostato il codice così:
uuEncodeToFile "x.uue", logoFile passo = FileLen(App.Path & "\files\" & TxtLogo) / 100 parziale = 0 avanzamento = 0 'questa è la progress bar ProgressBar1.Max = 100 Open "x.uue" For Input As 10 While EOF(10) = False Line Input #10, l$ parziale = parziale + Len(l$) + 2 avanzamento = Int(parziale / passo) MsgBox avanzamento 'ProgressBar1.Value = avanzamento OKToSend = False WS(1).SendData l$ & Chr$(13) & Chr$(10) While OKToSend = False: DoEvents: Wend Non và perche il valore di avanzamento supera quello della prorpietà Max della progressbar, quindi ottengo un bel errore. Dove sbaglio? |
|
|
|
|
|
#14 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Ci sono dei problemi sulla lettura del file...ho fatto qualche piccola correzzione, me nella variabile non ci finiscono mai i dati non capisco...
uuEncodeToFile "x.uue", logoFile passo = FileLen(App.Path & "\files\x.uue") / 100 parziale = 0 avanzamento = 0 'questa è la progress bar ProgressBar1.Max = 100 Open App.Path & "\files\x.uue" For Input As #10 While EOF(10) = False Line Input #10, l$ parziale = parziale + Len(l$) + 2 avanzamento = Int(parziale / passo) MsgBox avanzamento ProgressBar1.Value = avanzamento OKToSend = False WS(1).SendData l$ & Chr$(13) & Chr$(10) While OKToSend = False: DoEvents: Wend |
|
|
|
|
|
#15 |
|
Senior Member
Iscritto dal: Jul 2001
Messaggi: 367
|
Prova così. Io leggo il suo valore
passo = FileLen(App.Path & "\x.uue") / 100 ... .... Open App.Path & "\x.uue" For Input As #10 |
|
|
|
|
|
#16 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Ma allora va ora ?
passo me lo inizializzava bene...era la lettura che non andava... |
|
|
|
|
|
#17 | |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Quote:
|
|
|
|
|
|
|
#18 |
|
Senior Member
Iscritto dal: Jul 2001
Messaggi: 367
|
uuEncodeToFile "x.uue", logoFile
passo = FileLen("x.uue") / 100 MsgBox passo parziale = 0 avanzamento = 0 'questa è la progress bar Open "x.uue" For Input As 10 While EOF(10) = False Line Input #10, l$ parziale = parziale + (Len(l$) + 2) avanzamento = Int(parziale / passo) MsgBox avanzamento ProgressBar1.Value = avanzamento OKToSend = False WS(1).SendData l$ & Chr$(13) & Chr$(10) While OKToSend = False: DoEvents: Wend Con questo codice adesso finalmente mi funziona perfettamente. Ovviamente ti ringrazio del tuo prezziosissimo aiuto... Carmen |
|
|
|
|
|
#19 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Perfetto... Funziona tutto
|
|
|
|
|
|
#20 |
|
Senior Member
Iscritto dal: Jul 2001
Messaggi: 367
|
Siamo proprio forti!!!
Ops! Sei proprio forte |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 18:44.



















