Guide e Tutorials:indexed | |||||||
MAPI (Prima parte) Come premesso questa volta si andrà ad analizzare i metodi supportati dal controllo MapiSession, metodi che sono stati già introdotti negli esempi dell'articolo precedente. I metodi in questione sono rispettivamente SignOn e SignOff ed hanno lo scopo specifico di attivare e disattivare la sessione MAPI. Quindi il procedimento per l'utilizzo dei controlli MAPI, in relazione all'oggetto di base ossia MAPISession può essere descritta dalla figura sotto: Vediamoli uno per uno: il metodo SignOn come già detto, apre la sessione MAPI dopo aver recuperato tutte le informazioni sulla connessione all'account di posta con uno dei metodi che abbiamo già visto in precedenza (inserimento dei parametri come username e password da parte dell'utente, inserimento nel codice, inserimento nella finestra Proprietà dell'oggetto MapiSession). Come già è stato accennato la sintassi relativa all'attivazione della sessione MAPI è la seguente:
dove MAPISession1 è il nome assegnato come default al controllo MAPISession. Cosa accade quando viene aperta una nuova sessione MAPI? Fondamentalmente quello che succede quando viene creata una nuova finestra: il sistema operativo assegna ad essa un indicatore univoco che risulterà necessario per individuarla tra più sessioni aperte. L'identificatore che corrisponde ad un valore numerico, viene quindi memorizzato nella proprietà SessionID, che dovrà essere richiamata nel caso esistano più sessioni aperte e si desidera passare da una all'altra. Il valore predefinito di SessionID corrisponde a 0. Naturalmente questo rappresenta un valore di sola lettura: non è possibile impostare manualmente l'identificatore di una sessione MAPI ne in fase di progettazione ne in fase di avvio perchè questo è un lavoro che spetta al sistema operativo. Una volta visto il metodo SignOn preoccupiamoci del metodo SignOff che come accennato chiude una connessione MAPI. La sintassi è la seguente:
Chiudendo la sessione MAPI non è più possibile accedere al controllo MAPIMessages allo stesso modo in cui, chiudendo il programma Excel, non è più possibile accedere ai singoli fogli di calcolo. Chiusa la sessione anche la proprietà SessionID ed i vari parametri di inizializzazione come LogonUI, Password, DownloadMail vengono svuotati dei valori precedentemente assegnatole. Sarà quindi necessario reimpostare tutta la serie di informazioni da passare ad un'eventuale nuova sessione. Adesso che è stata terminata la descrizione generale del controllo MAPISession si può analizzare in dettaglio il controllo successivo ossia MAPIMessages che è in poche parole il cuore di ogni sessione MAPI. Senza MAPIMessages infatti non sarebbe possibile intervenire e gestire la posta elettronica e quindi anche l'apertura di una nuova sessione risulterebbe del tutto inutile. Il controllo in questione infatti mette a disposizione una serie di metodi e proprietà utili per creare il proprio programma di posta elettronica con tutte le funzioni di invio, ricezione e lettura dei messaggi. La prima cosa da fare per inizializzare un controllo MAPIMessages è quella di associare il controllo ad una sessione MAPI esistente. Questo perchè basta un unico controllo MAPIMessages (proprio com'è sufficiente un solo controllo MAPISession) nell'applicazione per gestire più sessioni MAPI. Per questa ragione però bisogna indicare chiaramente su quale sessione far lavorare il controllo MAPIMessages. Torna quindi utile la proprietà SessionID che identifica ognuna delle sessioni aperte. Per associare il controllo MAPIMessages ad una sessione:
Così per passare ad una nuova sessione MAPI e assegnarla al controllo MAPIMessages:
Come fare per accedere ai singoli messaggi di posta elettronica? Innanzitutto quando si connette il controllo MAPIMessages ad una connessione MAPI si ha accesso ad una partizione della memoria che archivia i messaggi ricevuti. All'interno di questo archivio viene assegnato a ciascun messaggio un indice che lo identifica in maniera univoca. Così il primo messaggio della lista ha indice 0, il secondo 1 e così via fino all'ennesimo messaggio che è dotato di indice n-1. Si può pensare a quest'archivio come una ListBox, siccome anch'essa ha una struttura simile in fatto di indicizzazione dei singoli elementi. Così come in una ListBox l'indice che individua ogni singolo membro è dato dalla proprietà ListIndex, per quanto riguarda il controllo MAPISession l'indice è dato dalla proprietà MsgIndex. Si vedrà tra poco come la proprietà risulterà molto utile. Passando adesso a qualcosa di immediatamente utile, possiamo analizzare la proprietà MsgCount che come la proprietà ListCount del controllo ListBox, indica quanti messaggi sono presenti nel gruppo della posta in arrivo (quindi messaggi nuovi più messaggi già ricevuti). Così risulta semplice, ad esempio all'avvio di un'applicazione, andare a recuperare il numero dei messaggi di posta elettronica presenti nella casella. Proviamo a visualizzare tale numero in una finestra di messaggio.
E' da notare che la prima linea del codice, dopo l'indicazione della sottoprocedura Form_Load indica, come abbiamo visto nell'articolo precedente, che i messaggi verranno scaricati all'avvio dell'applicazione. Nulla però vieta di eliminare questo passaggio indicando in questo caso:
La seconda riga invece fa uso della proprietà Fetch. Tale proprietà ha lo scopo di creare gruppi di messaggi utilizzando i messaggi selezionati nella cartella della posta in arrivo. Ognuno di questi gruppi di messaggi è creato in base a proprietà comuni indicate da FetchMsgType. Non aver indicato la proprietà FetchMsgType prima di includere Fetch nel codice significa aver creato un unico gruppo di messaggi che corrisponde a quello che sui server di posta elettronica viene definita la casella "InBox" oppure "Posta in arrivo". Inoltre, siccome nel codice non c'interessa gestire messaggi diversi da quelli standard, abbiamo potuto sorvolare sulla priorietà FetchMsgType. Adesso che è più o meno stata chiarita la struttura del controllo MAPIMessages e le regole per la gestione della posta in arrivo, possiamo dedicarci nel corso del prossimo articolo al recupero delle informazioni contenute nei singoli messaggi, come oggetto, corpo del messaggio, destinatario, mittente, data etc, utilizzando la proprietà MsgIndex di cui si parlava prima. |
Archivio:ndexed | ||||
Lezioni | Commenta questa lezione | Invia la tua guida | Avviso per le nuove lezioni | Proponi un argomento |
Visual Basic Italia© copyright 2000 - tutti i diritti riservati |