ciao a tutti,
avrei bisogno di qualche aiuto per quanto riguarda l'invio di mail utilizzando VB6.
premetto che non ho mai usato VB in vita mia e non sono un esperto programmatore quindi sentitevi liberi di mandarmi a quel paere nel caso in cui chieda cose troppo scontate^^.
il mio problema consiste nel dover creare e poi inviere una mail , inizialmente ho creato questa funzione
codice:
Public Function SendMailByOutlook(val As String) As Boolean
Dim osession As MAPI.session
Dim omessage As Message
Dim oRecip As Recipient
Set osession = CreateObject("MAPI.Session")
osession.Logon
Set omessage = osession.Outbox.Messages.Add
omessage.Subject = "prova"
Set oRecip = omessage.Recipients.Add("indirizzoDestinatario")
oRecip.Resolve
omessage.Text = val
omessage.Send , True
osession.Logoff
SendMailByOutlook = True
End Function
il metodo funziona perfettamente solo che usando la libreria MAPI purtroppo usa per forza l'outlook installato sul pc dove faccio partire il programmino , crea una mail con quello che poi devo spedire a mano schiacciando su invia.
ho allora cercato un po sulla rete tutti i suggerimenti su come mandare una mail senza usare outlook anche perche voglio poter utilizzare tale programma anche su pc in cui non è installato e dopo un giorno di ricerche ho deciso di provare con la libreria CDO , dopo una mezza giornata spesa a cercare dove fosse e come aggiungerla ho fatto questo nuovo metodo:
codice:
Public Function SendMailNoOutlook() As Boolean
' Create a new Email
Dim objNewMail As CDO.Message
Set objNewMail = New CDO.Message
Dim objConfig As CDO.Configuration
Set objConfig = New CDO.Configuration
Dim objFlds
Set objFlds = objConfig.Fields
objFlds("http://schemas.microsoft.com/cdo/configuration/sendusing") = 1 ' cdoSendUsingPickup
objFlds("http://schemas.microsoft.com/cdo/configuration/urlgetlatestversion") = True
objFlds("http://schemas.microsoft.com/cdo/configuration/smtpserverpickupdirectory") = "C:\mailroot\Pickup"
objFlds.Update
objNewMail.Configuration = objConfig
' Fill in required fields
objNewMail.To = "prova@tiscali.it"
'Note: the Replace is used so that the domain separators will be kept
objNewMail.From = "pippo@ciao.it"
On Error GoTo Errori
objNewMail.Subject = "soggetto"
objNewMail.TextBody = "testo text"
' Send it
objNewMail.Send
SendMailNoOutlook= True
End Function
purtroppo pero questo metodo non funziona del tutto, e quindi volevo chiedere qualche consiglio piu in particolare volevo sapere se:
-per funzionare devo aver installato qualche cosa di specifico sul pc? (invento: iis, exchange? etc)
- nelle proprietà in "smtpserverpickupdirectory" cosa devo mettere? all'inizio non lo avevo nemmeno messo ma mi dava un errore poi ho visto in molti esempi che mettevano "C:\mailroot\Pickup" e cosi ho copiato ma purtroppo se faccio partire il programma mi crea semplicemente un file mail in quel folder ma non viene inviato , resta li e se lo apro crea ancora una mail con outlook.....
- ultima cosa ho visto che nella proprietà "sendusing" dove ora c'e 1 (cdoSendUsingPickup) posso mettere 2 (cdoSendUsingPort) cosa cambia? io credo ( ma correggetemi se sto dicendo stupidate che sia per mandare la mail da un server smtp esterno ) io ho provato con
codice:
objFlds("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 ' cdoSendUsingPort
objFlds("http://schemas.microsoft.com/cdo/configuration/smtpserver")= "smtp.tiscali.it"
ma se eseguo mi dice che non riesce a connettersi con il server e in effetti mi pare anche strano che non mi debba autenticare...
grazie anticipatamente, spero che qualcuno riesca ad aiutarmi anche perche sto diventando pazzo con questa cosa....