Newsgroup: it.comp.lang.visual-basic
Titolo: VB6 e MAPI

Rieccomi...
VB6. Sto cercando di fare un programma che prenda dei file, li alleghi ad un
messaggio (generato al momento), apra la connessione Internet, spedisca e
chiuda. Il tutto in maniera completamente automatica.
Ho usato i controlli MAPI sotto VB6 (dato che per Access 2.0 sembra non
esistere documentazione sulle API di RASAPI16.DLL); però, guardando su MSDN
ho trovato svariato materiale, ma non sono riuscito a capire come inviare un
messaggio in rete.
Ovvero: tramite API o controllo MAPIMessage, creo un messaggio e ne eseguo
il Send. Questo messaggio finisce in posta in uscita. Come faccio a quel
punto a spedirlo senza intervento da parte dell'utente? Esiste un comando
tipo "Invia e Ricevi"?
Grazie!
--
--
Cordiali saluti
ALADINO INFORMATICA di Canova Gionata Aladino - FLASHNET Point
Via E.Chianesi, 15 - 55049 Viareggio (LU)
Tel.Fax. 0584/389210 Cell. 0338/8456974 e-mail: 
aladi...@flashnet.it

 tipo "Invia e Ricevi"?
Ahimé no, gran boiata, questa. In teoria, se tu non usassi la posta
remota e fossi perennemente collegato con Outlook o Exchange aperto il
metodo Sendmessage dovrebbe anche recapitare. Ma se Exchange non č
attivo, tanti saluti.
Ti consiglio di utilizzare, anziché i controlli MAPI, l'Active Messaging
1.2, una serie di oggetti OLE contenuti in una DLL che, se non ricordo
male, č presente sul CD di VB (sicuramente la documentazione).
L'oggetto Session dell'Active Messaging prevede il metodo DeliverNow,
che esegue il metodo FlushQueue dello spooler MAPI32, quello che viene
eseguito dal comando Recapita di Exchange.
Siccome la documentazione č un po' inconsistente, ti allego un po' di
codice che riguarda l'inizializzazione, la fase piů delicata. Non badare
agli allineamenti, ho fatto un bel po' di tagli :-)
Flavio Ronco
------------
    Dim objSession As Object
    Dim objInBox As Object
    Dim objMsgCol As Object
    Dim objMessage As Object
    Dim objMsgFilter As Object
    Dim objAttachCol As Object
    Dim objAttachment As Object
    Set objSession = CreateObject("MAPI.Session")
 
                '\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
                '------- Logon- --------------------------------------+
                objSession.Logon profileName:=sProfileName, _
                                newSession:=True, _
                                ShowDialog:=True, _
                                noMail:=False, _
                                parentWindow:=frmMain.hwnd
                '-----------------------------------------------------+
                '//////////////////////////////////////////////////////
 
                If Not Err.Number Then
                    DoEvents
                    Set objInBox = objSession.Inbox
                    Set objMsgCol = objInBox.Messages
                    Set objMsgFilter = objMsgCol.Filter
			....
			....
			....
			....
	' Esempio di DeliverNow...
            '\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
            objSession.DeliverNow 'Scarica la Mail dal server
                                             'e recapita i messaggi in
attesa.
                                             '(solo ActMsg 1.1 e
seguenti)
            '//////////////////////////////////////////////////////
 
		Else                    
                    Set objMessage = Nothing
                    Set objMsgFilter = Nothing
                    Set objMsgCol = Nothing
                    Set objInBox = Nothing
                    objSession.Logoff
		    Set objSession = Nothing
                End If

 eseguito dal comando Recapita di Exchange.
Sembra che inchiodi il mio PC... mi c'č voluto un po' a farlo funzionare e
poi mi sono bloccato. Tu sai mica se esiste qualche esempio funzionante?
Ti ringrazio infinitamente per la dritta, veramente molto utile!


 
Al di là dell'MSDN non saprei. Qualcosa di interessante ho visto, ci
sono molti siti dedicati a MAPI, però non saprei più dove andarlo a
cercare. Se trovo qualcosa ti faccio sapere.
Piuttosto, c'è un megafottutissimo errore nel codice che ti ho postato.
Roba da pivelli:
                If Not Err.Number Then
                    DoEvents
                    Set objInBox = objSession.Inbox
                    Set objMsgCol = objInBox.Messages
 
If Not Err.Number è sempre true. da correggere con If Err <> 0,
ovviamente.
E non ridete! :-(
Flavio Ronco
-- 
f.ronco@*NonMiServeNiente*
flashnet.it
http://www.metabrains.com
  [Under Construction]
-------------------------------------------------------------
"Che pubblico in gamba! Se ci dite dove lavorate,
domani mattina se abbiamo tempo vi veniamo a vedere"
[Paolo Rossi]

 Roba da pivelli:
ROFL!

 ROFL!
Ehi, fu un impeto di stile, tre anni fa... Non mi umiliare con un ROFL!
:)
Ciao
