Newsgroup: it.comp.appl.access
Titolo: Invio e-mail con allegati ... tramite Full Outlook

Ad oggi ho sempre utilizzato Outlook express per l'invio di files con
allegati in e-mail.
Trovai sul sito comune (o forse "the Access web") le API per fare ciò...
Ora avrei esigenza di pilotare "Full Outlook", ma ho difficoltà a orientarmi
tra la massa di materiale presente sul web.
Per me sarebbe importante poter interagire con Outlook tramite
"l'associazione tardiva" (onde evitare problemi di lost references).
Conoscete un link che faccia al caso mio?
Ciao a tutti


wrote:

Ciao Oscar
Io mi sono sempre appoggiato a questo sito:
http://www.3stone.be/access/index.php
c'è una sezione dedicata ad Outlook che mi ha sempre aiutato.
Ti allego una cosa che usavo io in un mio programmetto qualche anno fà
per fare forse qualche cosa di simile a quanto chiedi:
'Recupero dei dati dalla posta in arrivo:
'SELECT * FROM [Posta in arrivo] IN 'C:\'[Outlook
9.0;MAPILEVEL=Cartelle
'personali|];
'Recupero dei dati da una sottocartella della posta in arrivo:
'SELECT * FROM [Sottocartella] IN 'C:\'[Outlook 9.0;MAPILEVEL=Cartelle
'personali|Posta in arrivo];
Public Function SendMail()
   On Error GoTo Err_Send
   Const olMailItem = 0
   Dim OApp        As Object
   Dim OItem       As Object
   Dim mItm          As Object
   Dim myDestFolder  As Object   'Outlook.MAPIFolder
   Dim objNS         As Object   'Outlook.NameSpace
   Dim colFolders    As Object   'Outlook.Folders
   Dim objFolder     As Object   'Outlook.MAPIFolder
   Dim arrFolders()  As String
   Dim strFolderPath As String
   Dim i             As Long
   Set OApp = GetOutlook()
   Set OItem = OApp.CreateItem(olMailItem)
   strFolderPath = "Cartelle personali\Posta in Arrivo\INVIATA"
   strFolderPath = Replace(strFolderPath, "/", "\")
   arrFolders() = Split(strFolderPath, "\")
   Set objNS = OApp.GetNamespace("MAPI")
   Set objFolder = objNS.Folders.Item("Cartelle personali")
   'Set objFolder = objNS.Folders.Item(arrFolders(0))
   'If Not objFolder Is Nothing Then
   '  For i = 1 To UBound(arrFolders)
   '    Set colFolders = objFolder.Folders
   '    Set objFolder = Nothing
   '    Set objFolder = colFolders.Item(arrFolders(i))
   '    If objFolder Is Nothing Then
   '      Exit For
   '    End If
   '  Next
   'End If
   Set myDestFolder = objFolder
   With OItem
      .To = "
ik2...@libero.it
"
      '.CC = ""
      '.BCC = ""
      .Subject = "6000002121"
      .Body = "CORPO"
      If Len(Dir("D:\ABB\TEMP\rptSAL.pdf")) > 0 Then
           .Attachments.Add "D:\ABB\TEMP\rptSAL.pdf"
      End If
      'Set .SaveSentMessageFolder = myDestFolder
      .Send
   End With
   Set OItem = Nothing
   Set OApp = Nothing
   Exit Function
Err_Send:
   MsgBox Err.Number & " " & Err.Description
End Function
Private Function GetOutlook() As Object
' The GetOutlook() function sets the Outlook Application
' and Namespase objects and opens MS Outlook
On Error Resume Next
Dim mOutlookApp   As Object
Set mOutlookApp = GetObject("", "Outlook.application")
' If Outlook is NOT Open, then there will be an error.
' Attempt to open Outlook
If Err.Number > 0 Then
    Err.Clear
    Set mOutlookApp = CreateObject("Outlook.application")
    If Err.Number > 0 Then
        MsgBox "Could not create Outlook object", vbCritical
        Exit Function
    End If
End If
' Return the Success Flag as the value of GetOutlook()
Set GetOutlook = mOutlookApp
End Function
Tieni presente che con il LateBinding però non hai modo di capire se
la Mail è stata inviata correttamente, cosa che invece con
EarlyBinding hai modo di ereditare gli Eventi compreso quello
dell'invio.
Spero sia utile.
@Alex


Grazie per il materiale Alessandro    ;-)
Oggi non sono in grado di provarlo (su questo PC non ho installato Outlook), 
ma se avrò problemi tornerò all'attacco...
L'utilizzo dell'associazione tardiva per me è necessario perchè dovrei 
inserire il supporto per Outlook in un'applicazione standard.
Applicazione che nella maggior parte dei casi risiede su PC sprovvisti di 
Full Outlook, con conseguente errore da Lost References.
Dando un occhio al codice, non mi sono chiari i seguenti commenti:
'Recupero dei dati dalla posta in arrivo:
'SELECT * FROM [Posta in arrivo] IN 'C:\'[Outlook
9.0;MAPILEVEL=Cartelle
'personali|];
'Recupero dei dati da una sottocartella della posta in arrivo:
'SELECT * FROM [Sottocartella] IN 'C:\'[Outlook 9.0;MAPILEVEL=Cartelle
'personali|Posta in arrivo];
Immagino si tratti di funzionalità specifiche dell'applicazione da cui hai 
preso il sorgente.
Grazie ancora:  Oscar


Solo per curiosità: dove hai trovato il codice per effettuare l'invio con 
"Late Binding" attraverso Office Automation?
Sul sito (interessante) che ha indicato esiste solo un esempio attraverso 
"early binding".
Sei sempre una miniera di risorse Alessandro   ;-))
Ciao!

 Ciao!
Ciao
@Alex


Ciao.
Io ho trovato moltissima documentazione su:
http://www.helenfeddema.com/
Non so aiutarti oltre.
Ciao
Silvio