Newsgroup: it.comp.lang.visual-basic
Titolo: outlook

E' possibile fare un programma visual basic che mi mia l'elenco
completo delle mail contenute in outlook presentandomi mittente,
oggetto, data, ecc.. ed eventualmente che possa esportare
automaticamente una o più mail come file .msg?
Ho provato a cercare su internet e nei siti dedicati al visual basic,
ho trovato alcune cose sulle MAPI ma nulla che facesse al caso mio
grazie mille

 wrote in message
news:1131452305....@f14g2000cwb.googlegroups.com

Se per Outlook parliamo di MS_Outlook allora la strada da seguire
è quella dell'automazione.
Ti allego una Sub sviluppata per Access, che legge i Messaggi
e li salva in un DB(JET).
Prendi da questa solo la parte di accesso al modello Oggetti
di Outlook.
Importer les messages d'un dossier Outlook dans une table
Si la table d'importation n'existe pas, elle est créée par requête SQL
Sub ImportMails()
On Error Resume Next
Dim strAttachment As String
Dim strSql As String
Dim rsMail As DAO.Recordset
Dim tdf As DAO.TableDef
 
Dim Ol_App As New Outlook.Application
Dim Ol_MAPI As Outlook.NameSpace
Dim Ol_Folder As Outlook.MAPIFolder
Dim Ol_Items As Outlook.MailItem
Dim Ol_Attach As Outlook.Attachment
Set tdf = CurrentDb.TableDefs("TblMails")
If tdf Is Nothing Then
    strSql = "CREATE TABLE TblMails (" & _
        "CreationTime DATE," & _
        "LastModificationTime DATE," & _
        "SenderName CHAR(50)," & _
        "SenderAddress CHAR(50)," & _
        "SentOn DATE," & _
        "Sent YESNO," & _
        "TO CHAR(255)," & _
        "CC CHAR(255)," & _
        "BCC CHAR(255)," & _
        "UnRead YESNO," & _
        "ReceivedByName CHAR(50)," & _
        "ReceivedOnBehalfOfName CHAR(100)," & _
        "ReceivedTime DATE," & _
        "ConversationTopic CHAR(255)," & _
        "Subject CHAR(255)," & _
        "Categories CHAR(50)," & _
        "HTMLBody MEMO," & _
        "Size Long," & _
        "Attachments CHAR(255));"
        CurrentDb.Execute strSql
End If
Set rsMail = CurrentDb.OpenRecordset("TblMails")
Set Ol_MAPI = Ol_App.GetNamespace("MAPI")
Set Ol_Folder = Ol_MAPI.PickFolder
 
  For Each Ol_Items In Ol_Folder.Items
 
     For Each Ol_Attach In Ol_Items.Attachments
      strAttachment = strAttachment & Ol_Attach.DisplayName & vbCrLf
     Next Ol_Attach
 
   With rsMail
    .AddNew
    .Fields("BCC") = Ol_Items.Bcc
    .Fields("Categories") = Ol_Items.Categories
    .Fields("CC") = Ol_Items.CC
    .Fields("ConversationTopic") = Ol_Items.ConversationTopic
    .Fields("CreationTime") = Ol_Items.CreationTime
    .Fields("HTMLBody") = Ol_Items.HTMLBody
    .Fields("LastModificationTime") = Ol_Items.LastModificationTime
    .Fields("ReceivedByName") = Ol_Items.ReceivedByName
    .Fields("ReceivedOnBehalfOfName") = Ol_Items.ReceivedOnBehalfOfName
    .Fields("ReceivedTime") = Ol_Items.ReceivedTime
    .Fields("SenderName") = Ol_Items.SenderName
    .Fields("Sent") = Ol_Items.Sent
    .Fields("SentOn") = Ol_Items.SentOn
    .Fields("SenderAddress") = Ol_Items.Reply.Recipients.Item(1).Address
    .Fields("Size") = Ol_Items.Size
    .Fields("Subject") = Ol_Items.Subject
    .Fields("TO") = Ol_Items.To
    .Fields("UnRead") = Ol_Items.UnRead
    .Fields("Attachments") = strAttachment
    .Update
   End With
   strAttachment = ""
 Next Ol_Items
rsMail.Close
MsgBox "Messaggi importati"
Set rsMail = Nothing
Set tdf = Nothing
Set Ol_Attach = Nothing
Set Ol_Items = Nothing
Set Ol_Folder = Nothing
Set Ol_MAPI = Nothing
Set Ol_App = Nothing
End Sub
 
P.S. per semplicità, essendo una Sub(DEMO) usa l'EarlyBinding
ma nel tuo caso potrebbe essere meglio valutare il LateBinding.
Ciao
@Alex
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

Mi serviva proprio per MS_Outlook e la tua funzione è proprio quella
che fa al caso mio!
Grazie infinite!!
Alex
Alessandro Baraldi ha scritto:


 wrote in message
