Newsgroup: it.comp.appl.access
Titolo: Ricavare il client di posta predefinito

Ciao a tutti,
premetto che sono riuscito finalmente a risolvere il problema dellla 
gestione dell'invio delle email  tramite MAPI con OE (voi direte "sai che 
novità...", eh però a me con OE la libreria MAPI non funzionava...) ora...mi 
si pone questo problema però...
Ebbene il codice scritto va bene per OE ma non per MS Outlook e 
viceversa...non voglio entrare nel merito del perchè... ma vorrei 
semplicemente bypassare il problema del client di posta eseguendo a seconda 
del client predefinito l'uno o l'altro codice (già scritti entrambi)...
Come posso quindi da VBA riconoscere qul'è il client predefinito?
Grazie
Roberto 

 ha scritto nel messaggio 
news:4575a8a7$0$19235$4faf...@reader4.news.tin.it...

ciao roberto,
prova a dare 1 occhio qui 
http://support.microsoft.com/kb/299853/it
gaspare 

Roberto da Parma ha scritto:

Questo è il motivo per cui abitualmente chi deve inviare Mail
dall'applicativo non lo fà con
i Browser predefiniti, perchè non esiste solo OE o MSO, ma ci sono
altri Browser che danno tutti problemi legati alla personalizzazione.
Il metodo più sicuro e meno rognoso è quello di usare un componente
dedicato, Winsock in questo caso, e non hai più problemi....!
Purtroppo però vedo che l'abitudine è sempre quella di accrocchiare
soluzioni un pò capestro...!
Non è riferito a te personalmente Roberto, perchè moltissimi anche in
questo NG usano questi sistemi.....
Personalmente, ho visto che la maggiorparte di chi sviluppa con Access
ha questa tendenza, mentre chi sviluppa con VB6, per cultura o per
esperienza, usa Winsock.....!
;-)
@Alex

 ha scritto nel messaggio 
news:1165342771....@80g2000cwy.googlegroups.com...







;-)
@Alex
No no, hai ragione so bene che è molto meglio sviluppare un'applicazione che 
faccia uso solo dei propri "mezzi" ...
Ma è anche vero che a volte si "vuole" utilizzare il client di posta che va 
a genio...
Comunque piano piano so raggiungendo una soluzione di codice che forse potrà 
andar bene per OE, MS Outlook, Thunderbird...giustamente ce ne sono 
altri...ma al momento voglio testare il tutto su questi...
Piano piano...
Ciao
Roberto
P.s. Ho ancora qualche ostacolo con MAPILogon, anche su MSDN ci sono 
spiegazioni approssimative... 

 ha scritto nel messaggio 
news:4575bf22$0$3217$4faf...@reader2.news.tin.it...

Mmmm...dimenticavo...c'è allora comunque un modo per verificare qual'è il 
client di posta predefinito?
Grazie
Roberto 

 Roberto
Devi leggere la chiave di registro:
HKEY_CLASSES_ROOT\htmlfile\shell\open\command
Sai come si legge il Registro vero...?
@Alex

 ha scritto nel messaggio 
news:1165347315....@79g2000cws.googlegroups.com...

[CUT]




@Alex
Ehmmm...non benissimo...ma l'ho usata riadattando un modulo che usavo per 
leggere il nome del pc (che funziona)
ma con la stringa che mi hai dato non va...(uso WXP)
ma nel frattempo mi sorge anche una domanda...cambia l'indirizzo della 
chiave a seconda del SO?
Grazie
Roberto
Public Declare Function MyRegOpenKeyExA Lib "advapi32.dll" _
Alias "RegOpenKeyExA" (ByVal hkey As Long, ByVal lpSubkey As String, _
ByVal ulOptions As Long, ByVal samDesired As Long, ByRef phkresult As _
Long) As Long
Public Declare Function MyRegQueryValueExA Lib "advapi32.dll" Alias _
"RegQueryValueExA" (ByVal hkey As Long, ByVal lpValueName As String, ByVal _
lpReserved As Long, ByVal lpType As Long, ByVal lpData As String, lpcbData 
As _
Long) As Long
Public Function ApriChiaveNomeComputer() As Long
Dim MyName As String
Dim RegPath As String
Dim l_MyName As Long
Dim risultato As Long
Dim MyHandle As Long
RegPath = "HKEY_CLASSES_ROOT\htmlfile\shell\open\command"
risultato = MyRegOpenKeyExA(HKEY_LOCAL_MACHINE, RegPath, 0, KEY_QUERY_VALUE, 
MyHandle)
If risultato = 0 Then
ApriChiaveNomeComputer = MyHandle
Else
MsgBox "Errore n°: " & risultato
ApriChiaveNomeComputer = 0
End If
End Function
Public Sub mostraNomeComputer()
Dim MyName As String
Dim RegPath As String
Dim l_MyName As Long
Dim KeyType As Long
Dim risultato As Long
l_MyName = 255
MyName = String(l_MyName, vbNullChar)
RegPath = "ComputerName"
risultato = ApriChiaveNomeComputer()
If risultato > 0 Then
risultato = MyRegQueryValueExA(risultato, RegPath, 0, KeyType, MyName, 
l_MyName)
If risultato = 0 Then
MsgBox "Nome Computer: " & MyName
Else
MsgBox "Errore nella lettura del nome del computer"
End If
Else
MsgBox "Problemi nell'apertura della chiave del registro."
End If
End Sub 

> Roberto
In questa chiave c'è qualcosa:
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\mailto\shell\open\command
Ciao, Carlo 

 ha scritto nel messaggio 
news:el5s8c$2kr$1...@tdi.cu.mi.it...

Eh eh...la sai lunga...dovrebbe essere quella giusta!!
Grazie
Roberto 

 ha scritto nel messaggio 
news:el5s8c$2kr$1...@tdi.cu.mi.it...

La chiave è giusta...ma non capisco perchè non me la fa aprire...con il 
codice che ho postato... :-((
Ciao
Roberto 

 ha scritto nel messaggio 
news:457697c2$0$3199$4faf...@reader2.news.tin.it...

Risolto...errore perchè andavo a leggere una sottochiave...
Scusate...
Ciao
Roberto 

 ha scritto nel messaggio 
news:45769958$0$3209$4faf...@reader2.news.tin.it...

In conclusione i due codici scritti vanno bene uno per MS Outlook e l'altro 
per OE e Thunderbird ma credo possa funzionare anche per altri simili...
Attraverso la lettura della chiave smisto il codice da eseguire.E il tutto 
funziona a meraviglia.
La soluzione finale quindi prevede la creazione di pdf da report e l'invio 
di quest'ultimo via email ricavando l'indirizzo dalla maschera, naturalmente 
in caso di errore l'invio non viene effettuato.
Grazie a tutti
Roberto