General

6.229 Inviare e-mail da VBA usando MSMAPI32
  Carlo Costarella

Questo ennesimo lavoro sull'invio di e-mail da applicativi Access vuole aggiungere un'altra possibilità alle altre già offerte sul Sito Comune.
Questa volta ho voluto usare MSMAPI32.ocx un controllo free che si può anche scaricare dalla rete, per esempio da qui:
http://www.afreeocx.com/ocx/info/msmapi32_ocx.html

Grazie a questo controllo è possibile inviare e-mail a destinatari multipli (anche in cc o Bcc) e allegati singoli o multipli.
Il file di esempio che è allagato a questa FAQ ma che è possibile scaricare da qui:
http://www.frantoiogestione.com/MailSendWithMSMAPI32.zip
contiene due maschere, una per l'invio semplice di e-mail con o senza allegato ed una per l'invio complesso con possibilità di molti allegati e molti destinatari.
Per la ricerca dei file da allegare ho usato due tecniche, presenti entrambe nel db: il classico ocx comdlg32.ocx e le API.
Ho preferito non usare gli array per i destinatari multipli ma mi sono appoggiato a tabelle temporanee.
Ricordo che per i destinatari multipli bisogna usare il punto e virgola (;) come separazione, senza spazi.
Con lo stesso controllo si può implementare un vero e proprio client di posta elettronica e tutto in Access...ma questo sarà materia per un prossimo lavoro o affidato alla buona volontà di qualcuno.

Note tecniche.
Cose da fare qualora l'ocx non sia già presente nella cartella di sistema.
Scaricare l'ocx msmapi32.ocx da:
http://www.afreeocx.com/ocx/info/msmapi32_ocx.html
ed inserirlo in c:\windows\system32.

Se ci sono problemi con la registrazione, che normalmente si fa da Start con
Esegui regsvr32 MSMAPI32.ocx ,
oppure dà un errore all'apertura del db, apri notepad e scrivi questo:
[HKEY_CLASSES_ROOT\Licenses\899B3E80-6AC6-11cf-8ADB-00AA00C00905]
@ = "wjsjjjlqmjpjrjjjvpqqkqmqukypoqjquoun"

esattamente come è scritto (puoi fare il copia e incolla delle due righe).
Salva il file con il nome MSMAPI.SRG e mettilo nella cartella di c:\windows\system32.
Con un doppio clic lo esequi ed anche l'errore sulla licenza dovrebbe andare a posto.
Si tratta di un bug riconosciuto da Microsoft e documentato.
Il tutto va fatto a programma (EmailOEXP.mdb) chiuso.

Anche l'ocx comdlg32.ocx dovrebbe essere presente nella cartella system32.
Qualora così non fosse nel file MailSendWithMSMAPI32.zip allegato a questa FAQ trovi anche tale controllo OCX che va copiato e
registrato dalla cartella di sistema. (regsvr32 commdlg32.ocx)

Download:
 
  MailSendWithMSMAPI32.zip (235Kb) MSAccessXP database


Se pensate di avere del materiale freeware interessante e volete pubblicarlo, allora leggete qui.