Re: Getting emails into MS Access - Code enclosed
- From: "Dmitry Streblechenko" <dmitry@xxxxxxxxxxx>
- Date: Sun, 23 Oct 2005 13:04:34 -0700
1. There is absolutely no reason to loop through
*all* messages in the Inbox looking for the unread messages. Use
Items.Restrict/FindFirst instead ("[Unread] = True")
2. Your code moves the messages inside of the "for
each" loop, thus changing the item count in the folder. Loop from Count down to
1 (step -1) instead.
3. To use Redemption to avoid the security prompt,
change your code as follows:
set
sItem =
CreateObject("Redemption.SafeMailItem")
sItem.Item
= OlMail
Rst!ISBNHOLD_Hold102 = sItem.SenderName
If InStr(1, OlMail.Subject, "ISBN") > 0 Then
Rst!ISBNHOLD_Hold201 = OlMail.Subject
Rst!ISBNHOLD_Hold002 = OlMail.ReceivedTime
Rst!ISBNHOLD_Hold003 = OlMail.ReceivedTime
Rst!ISBNHOLD_Hold001 = sItem.Body
Rst!ISBNHOLD_Hold004 = "True"
' OlMail.Move OlAccept
Else
Rst!ISBNHOLD_Hold201 = OlMail.Subject
Rst!ISBNHOLD_Hold002 = OlMail.ReceivedTime
Rst!ISBNHOLD_Hold003 = OlMail.ReceivedTime
Rst!ISBNHOLD_Hold001 = sItem.Body
Rst!ISBNHOLD_Hold004 = "False"
OlMail.Move OlFailed
End If
'
If InStr(1, OlMail.Subject, "ISBN") > 0 Then
Rst!ISBNHOLD_Hold201 = OlMail.Subject
Rst!ISBNHOLD_Hold002 = OlMail.ReceivedTime
Rst!ISBNHOLD_Hold003 = OlMail.ReceivedTime
Rst!ISBNHOLD_Hold001 = sItem.Body
Rst!ISBNHOLD_Hold004 = "True"
' OlMail.Move OlAccept
Else
Rst!ISBNHOLD_Hold201 = OlMail.Subject
Rst!ISBNHOLD_Hold002 = OlMail.ReceivedTime
Rst!ISBNHOLD_Hold003 = OlMail.ReceivedTime
Rst!ISBNHOLD_Hold001 = sItem.Body
Rst!ISBNHOLD_Hold004 = "False"
OlMail.Move OlFailed
End If
'
"Id10 Terror" <noone@xxxxxxxxxxx> wrote in message
news:udJfQU$1FHA.1332@xxxxxxxxxxxxxxxxxxxx...
> Hi:>
> I am using MS Outlook 2003 and MS Access 2003 for this project. I need to
> run Access to pull emails out of Outlook into my tables automatically. I
> fully understand that this code is old, but I can not find anything suitable
> elsewhere. Redemption might work, but I can't find code that will do what I
> want.
>
> My problems with this are as follows:
>
> 1) After I run the code, I get the typical pain in the *** pop-up and I
> click to run. It runs, but then locks up totally. Oddly enough, after I
> end the tasks and open Access, the information is there, so something is
> working properly. I do not get the message that emails have arrived either,
> probably because it crashed before it got to that code.
>
> 2) My Outlook and Windows Messenger are also locked in my taskbar without
> any way of closing or shutting them down.
>
> 3) I have 3 email folders in Outlook; ISBNEmail, ISBN-Passed, ISBN-Failed.
> With Outlook rules, I send emails with "ISBN" in the subject to ISBNEmail.
> Most of the time it works. Now, I want to use my code to access the ISBN
> folder and check the criteria. Then move the email to 1 of the folders.
> For some reason, I can not access any of the 3 folders with this code.
>
> 4) Not the biggest headache, but I am inserting the date and time of the
> email in my table. Problem is that it puts the general date in each field.
> I have tried dozens of formats but it doesn't work.
>
> I know this is a lot to ask, but any help on these issues/problems would
> greatly be appreciated.
>
>
>
> Signed
> Id10 Terror = Idiot Error
>
>
> *************** MS Access code *******************************
> '
> Dim Olapp As Outlook.Application
> Dim Olmapi As Outlook.NameSpace
> Dim Olfolder As Outlook.MAPIFolder
> '
> 'Set Olfolder = Olfolder.Folders("ISBNEmail")
> Dim OlAccept As Outlook.MAPIFolder
> Dim OlDecline As Outlook.MAPIFolder
> Dim OlFailed As Outlook.MAPIFolder
> Dim OlMail As Object ' Have to late bind as appointments e.t.c screw it up
> Dim OlItems As Outlook.Items
> Dim OlRecips As Outlook.Recipients
> Dim OlRecip As Outlook.Recipient
> Dim Rst As Recordset
> '
> Set Rst = CurrentDb.OpenRecordset("tblISBN_Hold01")
> Set Olapp = CreateObject("Outlook.Application")
> Set Olmapi = Olapp.GetNamespace("MAPI")
> Set Olfolder = Olmapi.GetDefaultFolder(olFolderInbox)
> Set OlItems = Olfolder.Items
> 'Set OlAccept = Olfolder.Folders("ISBN-Passed")
> 'Set OlFailed = Olfolder.Folders("ISBN-Failed")
> '
> ' Set up a loop to run till the inbox is empty (otherwise it skips some)
> Do Until OlItems.Count = 0
> '
> Set OlItems = Olfolder.Items
> For Each OlMail In OlItems
> '
> If OlMail.UnRead = True Then
> OlMail.UnRead = False 'Mark mail as read
> Rst.AddNew
> Rst!ISBNHOLD_Hold102 = OlMail.SenderName
> '
> If InStr(1, OlMail.Subject, "ISBN") > 0 Then
> Rst!ISBNHOLD_Hold201 = OlMail.Subject
> Rst!ISBNHOLD_Hold002 = OlMail.ReceivedTime
> Rst!ISBNHOLD_Hold003 = OlMail.ReceivedTime
> Rst!ISBNHOLD_Hold001 = OlMail.Body
> Rst!ISBNHOLD_Hold004 = "True"
> ' OlMail.Move OlAccept
> Else
> Rst!ISBNHOLD_Hold201 = OlMail.Subject
> Rst!ISBNHOLD_Hold002 = OlMail.ReceivedTime
> Rst!ISBNHOLD_Hold003 = OlMail.ReceivedTime
> Rst!ISBNHOLD_Hold001 = OlMail.Body
> Rst!ISBNHOLD_Hold004 = "False"
> OlMail.Move OlFailed
> End If
> '
> Rst.Update
> '
> End If
> '
> Next
> '
> Loop
> MsgBox "Your wish is my command. New mails have been checked. Please check
> the database for details", vbOKOnly
> '
> End Sub
>
>
- References:
- Getting emails into MS Access - Code enclosed
- From: Id10 Terror
- Getting emails into MS Access - Code enclosed
- Prev by Date: Change subject vb.net
- Next by Date: Re: Change subject vb.net
- Previous by thread: Getting emails into MS Access - Code enclosed
- Next by thread: Change subject vb.net
- Index(es):
Loading