Newsgroup: it.comp.appl.access
Titolo: Ottimizzazione invio mail tramite MAPI

Ciao a tutti, č un pň che non ci si sente...beh...sono ancora vivo...tra 
vacanze e impegni "urgenti" al rientro al lavoro č sempre un casino...
So che l'argomento č stato ampiamente discusso ma mi permetto di chiedere 
una "ottimizzazione" ... mi spiego...
Uso una delle tante funzioni con MAPI per gestire l'invio della 
mail...funziona tutto benissimo tranne per un piccolo particolare...e 
cioč...
Se imposto una firma e/o uno sfondo in OE o Outlook questo viene 
ignorato...ho provato vari settaggi sui programmi ma credo di essere giunto 
alla conclusione che deve essere impostato da VBA...
Ho creato infatti una configurazione per email in html ma come faccio ad 
applicarla all'invio???
Si puň? Eventualmente posso anche accettare l'invio con un'altro tipo di 
procedura... :-((
Parte del codice che utilizzo lo posto qui sotto...
Grazie come sempre
-- 
Roberto da Parma
P.S X Ciroteo...la straputtanaccia... in puglia avessi preso un giorno 
bello!Secondo me solo la mia settimana ha fatto brutto!!
Type MAPIMessage
    Reserved As Long
    Subject As String
    NoteText As String
    MessageType As String
    DateReceived As String
    ConversationID As String
    flags As Long
    RecipCount As Long
    FileCount As Long
End Type
Type MAPIRecip
    Reserved As Long
    RecipClass As Long
    Name As String
    Address As String
    EIDSize As Long
    EntryID As String
End Type
Type MAPIFile
    Reserved As Long
    flags As Long
    Position As Long
    PathName As String
    FileName As String
    FileType As String
End Type
Private Declare Function MAPILogon Lib "MAPI32.DLL" _
        (ByVal UIParam As Long, _
        ByVal User As String, _
        ByVal PASSWORD As String, _
        ByVal flags As Long, _
        ByVal Reserved As Long, _
        ByRef Session As Long) As Long
Private Declare Function MAPILogoff Lib "MAPI32.DLL" _
        (ByVal Session As Long, _
        ByVal UIParam As Long, _
        ByVal flags As Long, _
        ByVal Reserved As Long) As Long
Public Declare Function MAPISendMail Lib "MAPI32.DLL" _
        Alias "BMAPISendMail" _
        (ByVal Session&, _
        ByVal UIParam&, _
        message As MAPIMessage, _
        Recipient() As MAPIRecip, _
        File() As MAPIFile, _
        ByVal flags&, _
        ByVal Reserved&) As Long
Public Declare Function GetProfileString Lib "Kernel32" _
        Alias "GetProfileStringA" _
        (ByVal lpAppName As String, _
        ByVal lpKeyName As String, _
        ByVal lpDefault As String, _
        ByVal lpReturnedString As String, _
        ByVal nSize As Long) As Long
Global Const SUCCESS_SUCCESS = 0
Global Const MAPI_TO = 1
Global Const MAPI_CC = 2
Global Const MAPI_LOGON_UI = &H8
Public Function Sendmail(sSubject As String, sTo As String, sCC As String, 
sAttach As String, sMessage As String)
On Error Resume Next
    Dim i, cTo, cCC, cAttach
    Dim MAPI_Message As MAPIMessage
    cTo = CountTokens(sTo, ";")
    cCC = CountTokens(sCC, ";")
    cAttach = CountTokens(sAttach, ";")
    ReDim rTo(0 To cTo) As String
    ReDim rCC(0 To cCC) As String
    ReDim rAttach(0 To cAttach) As String
    ParseTokens rTo(), sTo, ";"
    ParseTokens rCC(), sCC, ";"
    ParseTokens rAttach(), sAttach, ";"
    ReDim MAPI_Recip(0 To cTo + cCC - 1) As MAPIRecip
    For i = 0 To cTo - 1
        MAPI_Recip(i).Name = rTo(i)
        MAPI_Recip(i).RecipClass = MAPI_TO
    Next i
    For i = 0 To cCC - 1
        MAPI_Recip(cTo + i).Name = rCC(i)
        MAPI_Recip(cTo + i).RecipClass = MAPI_CC
    Next i
    ReDim MAPI_File(0 To cAttach) As MAPIFile
    MAPI_Message.FileCount = cAttach
    For i = 0 To cAttach - 1
        MAPI_File(i).Position = -1
        MAPI_File(i).PathName = rAttach(i)
    Next i
    MAPI_Message.Subject = sSubject
    MAPI_Message.NoteText = sMessage
    MAPI_Message.RecipCount = cTo + cCC
    Sendmail = MAPISendMail(0&, 0&, MAPI_Message, MAPI_Recip, MAPI_File, 
MAPI_LOGON_UI, 0&)
End Function 

 Grazie come sempre
[cut]
Ciao Roberto.
Sinceramente non credo sia possibile accedere a MAPI per inviare HTML,
almenon non ho
trovato alcun sistema... nativo...!
Potresti provare a formattare il Body con Tag HTML... ma sapendo come aviene
la decodifica SMTP
dubito possa funzionare...!
Il metodo migliore è usare componenti esterni come Winsock.Ocx (usare la DLL
da Access sarebbe un bagno di sangue)...!
A questo punto se puoi distribuire Winsock allora hai 3 strade...!
1) Usare il mio demo di SendMail, che se non ricordo male prevede anche la
Firma...! ;-)
2) Usare una DLL esterna che Wrappa il controllo Winsock(che devi sempre
distribuire), in sostanza fà quello che fà il mio demo, ma in modo più
raffinato conuna DLL...!
3) Cercare una DLL(oppure farla in VB6 che è relativamente)semplice che si
appoggia al Socket direttamente per evitare di distribuire l'OCX
Dimmi che strada puoi prendere.
-- 
@Alex (Alessandro Baraldi)
---------------------------------------------------------------------------
http://www.sitocomune.com/
http://www.alessandrobaraldi.it
---------------------------------------------------------------------------

 Uso una delle tante funzioni con MAPI per gestire l'invio della
cut
Oltre a quello che ti ha suggerito Alex, hai provato con CDO presente dalla 
versione 2000 di windows?
Non vorrei sbagliare ma credo che MA abbia fatto un lavoro del genere.
Ciao, Carlo


Io uso i CDO, ma non mi sono inventato nulla
è tutto codice disponibile e molto semplice
(resta il discorso dei riferimenti)
-- 
-- 
MAssimiliano Amendola
www.accessgroup.it
Cisa - Conferenza Italiana Sviluppatori Access
Segrate (MI), 7-8 giugno 2007

 Non vorrei sbagliare ma credo che MA abbia fatto un lavoro del genere.
Girando per la rete ho trovato qualcosa.
Per esempio questo semplice codice funziona per inviare un messaggio con 
allegato e sempre dopo aver messo il riferimento a Microsoft CDO:
Dim myMail
Set myMail = CreateObject("CDO.Message")
myMail.Subject = "email di testo con allegato"
myMail.From = "
tuoind...@libero.it
"
myMail.To = "
tuodest...@virgilio.it
"
myMail.TextBody = "messaggio di testo semplice."
myMail.AddAttachment "c:\pdate.txt"
myMail.Send
Con questo esempio puoi inviare testo html:
Dim myMail
Set myMail=CreateObject("CDO.Message")
myMail.Subject="email di testo HTML"
myMail.From="
ma...@miodominio.com
"
myMail.To="
qual...@dominio.com
"
myMail.HTMLBody = "<h1>questo è un testo HTML, h1 è un tag che fa grande il 
testo (header1)</h1>"
myMail.Send
Ciao, Carlo 

 Si può? Eventualmente posso anche accettare l'invio con un'altro tipo di


 ha scritto nel messaggionews:46e54d73$1$17941$4faf...@reader1.news.tin.it...> Ciao a tutti, è un pò che non ci si sente...beh...sono ancora vivo...tra


 Ciao, Carlo
ciao! io ho problemi col cdo in una rete dove c'è exchange. non avendo
io accesso al server exchange non posso risolvere. il problema è che
mi blocca le mail che non sono nel dominio. per il resto sono comodi.

 ha scritto nel messaggio 
news:1189458316.8...@22g2000hsm.googlegroups.com...


Almeno quello no....mangiavo pesce....e l'unica cosa che potevo fare era 
correre...anche sotto la pioggia! :-(((
-- 
Roberto da Parma

 ha scritto nel messaggio 
news:fc3quc$4c2$1...@tdi.cu.mi.it...

Proverò a darci un'occhiata....vi saprò dire.
Grazie mille a tutti.
naturalmente appena ci salto fuori vi faccio sapere
-- 
Roberto da Parma