Avatar billede lava Nybegynder
25. marts 2002 - 12:54 Der er 21 kommentarer og
1 løsning

Læse mails

Hvordan får jeg lige access til at ræse gennem min indbakke og importere udvalgte mails ?

Jeg vil kort sagt gerne have et modul der læser mine mails, hvis nye mails opfylder visse kriterier skal indholdet af mailen ligges over i en tabel.

Lava
Avatar billede henrik13 Nybegynder
25. marts 2002 - 13:08 #1
Kikker
Avatar billede larsen Nybegynder
25. marts 2002 - 13:21 #2
Er det fra Outlook Express, Outlook eller et andet mailprogram?
Avatar billede lava Nybegynder
25. marts 2002 - 13:23 #3
Outlook 2000 det ville selvfølgelig være bedst hvis koden kunne logge direkte på min exchange server..
Avatar billede larsen Nybegynder
25. marts 2002 - 13:32 #4
Jeg har fundet hvordan du kan eksportere Outlook Journal til en access-DB på :
http://www.microsoft.com/officedev/articles/sampauto.htm

Det kan være der er links videre.

(Jeg ved godt det ikke helt var det du søgte men det er måske ikke så kompliceret at ændre det til mail)
Avatar billede lava Nybegynder
25. marts 2002 - 13:41 #5
Det kan jeg vist ikke gennemskue :(
Avatar billede larsen Nybegynder
25. marts 2002 - 13:42 #6
Jeg arbejder lige på det ..... :-))
Avatar billede larsen Nybegynder
25. marts 2002 - 14:32 #7
Ok. Her er den, men uden filter og den tager KUN fra indbakken.

Opret en tabel i Access med navnet "tblEMail" og med disse felter :
MAIL_FROM
MAIL_TO
MAIL_CC
MAIL_BCC
MAIL_Subject
MAIL_Body

Som alle er af typen NOTAT og kan indeholde TOMME felter.

Husk også at ændre referencerne i Access så du bruger : "Microsoft DAO 3.x" og "Microsoft Outlook 9.0 Object Library".


Og her kommer så modulet :

Sub ImportEMailFromOutlook()

  ' This code is based in Microsoft Access.

  ' Set up DAO objects (uses existing "tblEMail" table)
  Dim rst As DAO.Recordset
  Set rst = CurrentDb.OpenRecordset("tblEMail")


  ' Set up Outlook objects.
  Dim ol As New Outlook.Application
  Dim olns As Outlook.Namespace
  Dim cf As Outlook.MAPIFolder
  Dim c As Outlook.MailItem
  Dim objItems As Outlook.Items

  Set olns = ol.GetNamespace("MAPI")
  Set cf = olns.GetDefaultFolder(olFolderInbox)
  Set objItems = cf.Items
  iNumMails = objItems.Count
  If iNumMails <> 0 Then
      For i = 1 To iNumMails
        If TypeName(objItems(i)) = "MailItem" Then
            Set c = objItems(i)
            rst.AddNew
            rst!Mail_FROM = c.SenderName
            rst!Mail_To = c.To
            rst!Mail_CC = c.CC
            rst!Mail_BCC = c.BCC
            rst!Mail_Subject = c.Subject
            rst!Mail_Body = c.Body
            rst.Update
        End If
      Next i
      rst.Close
      MsgBox "Finished."
  Else
      MsgBox "No mails to export from Outlook."
  End If

End Sub
Avatar billede larsen Nybegynder
25. marts 2002 - 14:33 #8
Det virker hos mig :-))

Hvis du ikke kan få det til at virke, så sig lige til for så kan jeg sende dig en DB med det i..
Avatar billede lava Nybegynder
25. marts 2002 - 15:05 #9
Det virker fint.
Men hvis jeg gerne vil have koden til at logge på exchangeserveren er det så noget større problem.
Det er fordi det ikke er min egen mailbox der skal importeres.
Avatar billede larsen Nybegynder
25. marts 2002 - 15:07 #10
Det ved jeg faktisk ikke, men jeg arbejder lige lidt på det og giver lyd. Ok ?
Avatar billede larsen Nybegynder
25. marts 2002 - 15:49 #11
Jeg tror dette virker... Du skal bare huske at ændre linien :

  olns.Logon "Profile", "password", True, True

til din egen (eller den andens profil) og password.


Sub ImportEMailFromOutlookExchange()

  ' This code is based in Microsoft Access.

  ' Set up DAO objects (uses existing "tblEMail" table)
  Dim rst As DAO.Recordset
  Set rst = CurrentDb.OpenRecordset("tblEMail")


  ' Set up Outlook objects.
  Dim ol As New Outlook.Application
  Dim olns As Outlook.Namespace
  Dim cf As Outlook.MAPIFolder
  Dim c As Outlook.MailItem
  Dim objItems As Outlook.Items
  Dim UnR, Re As Integer

  Set olns = ol.GetNamespace("MAPI")
  olns.Logon "Profile", "password", True, True
  UnR = 0
  Re = 0
  Set cf = olns.GetDefaultFolder(olFolderInbox)
  Set objItems = cf.Items
  iNumMails = objItems.Count
  If iNumMails <> 0 Then
      For i = 1 To iNumMails
        If TypeName(objItems(i)) = "MailItem" Then
            Set c = objItems(i)
            rst.AddNew
            rst!Mail_FROM = c.SenderName
            rst!Mail_To = c.To
            rst!Mail_CC = c.CC
            rst!Mail_BCC = c.BCC
            rst!Mail_Subject = c.Subject
            rst!Mail_Body = c.Body
            If c.UnRead = False Then
                UnR = UnR + 1
            Else
                Re = Re + 1
            End If
            rst.Update
        End If
      Next i
      rst.Close
      MsgBox "Finished." & vbCr & "(Ulæst = " & UnR & ", Læst = " & Re & ")"
  Else
      MsgBox "No mails to export from Outlook."
  End If

End Sub
Avatar billede lava Nybegynder
25. marts 2002 - 15:54 #12
Hvor fortæller jeg den hvad min exchange server hedder ?
Avatar billede larsen Nybegynder
25. marts 2002 - 16:13 #13
Jeg er desværre ikke ret stærk i exchange.

Er det sådan at man skal logge sig på hver gang man starter Outlook op ??
Avatar billede larsen Nybegynder
25. marts 2002 - 16:23 #14
Er det noget alla dette du mener :

Sub SimpleImport()
    Dim dbs As Database
    Dim strConnect As String
    Dim strSQL As String
    Set dbs = CurrentDb
    'Build the connection string.
    strConnect = _
      "Exchange 4.0;MAPILEVEL=Mailbox - KiraR|Inbox;DATABASE=" _
      & dbs.Name & ";"
    'Build the SQL statement.
    strSQL = _
        "SELECT * INTO ImportTable FROM [" & strConnect & "].MyMessages;"
    'Run the query.
    dbs.Execute strSQL
    'Refresh the database window and clear database object variable.
    RefreshDatabaseWindow
    dbs.Close
    dbs = Nothing
End Sub
Avatar billede lava Nybegynder
25. marts 2002 - 16:23 #15
Dim objSession
Set objSession = CreateObject("MAPI.Session")
strProfileInfo = "Servernanv" & vbLf & "Mailkontonavn"
Err.Clear
objSession.Logon "", "", False, True, 0, True, strProfileInfo
If Err.Number = 0 Then

Else
MsgBox "There was an error logging on."
End If

Denne kode plejer jeg at bruge, men kunne ikke få det til at virke idag.
Avatar billede larsen Nybegynder
25. marts 2002 - 16:25 #16
Ok, jeg arbejder lidt :-))
Avatar billede lava Nybegynder
26. marts 2002 - 11:41 #17
Hvad så larsen
Gav det nogen mening ?
Avatar billede larsen Nybegynder
26. marts 2002 - 12:15 #18
Lidt :-/
Jeg tror jeg har en løsning omlidt :-?
Avatar billede larsen Nybegynder
26. marts 2002 - 12:24 #19
I hjælpen står der :

Logs the user on to MAPI, obtaining a MAPI session.

Syntax

objNameSpace.Logon([Profile,] [Password,] ]ShowDialog,] [NewSession])

objNameSpace    An expression that returns a NameSpace object.

Profile  Optional String. The profile name to use for the session.

Password  Optional String. The password (if any) associated with the profile.

ShowDialog  Optional Boolean. True to display the MAPI logon dialog.

NewSession  Optional Boolean. True to create a new session (doesn't use an existing session). Multiple sessions cannot be created in Outlook.


Så jeg ville tro at det skulle være på følgende måde :

olns.Logon(strProfileInfo, "", False, True)
Avatar billede lava Nybegynder
26. marts 2002 - 12:47 #20
Det prøver jeg senere i dag.
Skal du ikke have lidt point for alt det fine arbejde ?
Avatar billede larsen Nybegynder
26. marts 2002 - 12:52 #21
Jotak, gerne :-)

Du kan bare prøve at se om det virker først, så kan du da lige give lyd fra dig, så er jeg der igen :-))
Avatar billede larsen Nybegynder
29. marts 2002 - 10:20 #22
Nå, men virker det ??
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester