Benutzer mit den meisten Antworten
Counting e-mails from a shared inbox

Frage
-
Hello,
i am owner of our group postbox ( called Postfach - ITO SD4EMEA).
I would like to count the e-mails automaticlly. If i start the following code in VB 2008 it gives me the error that Outlook dont know a name.
The error is caused of the code line:Dim olInbox As Outlook.MAPIFolder = olNamespace.GetSharedDefaultFolder(olPostfach, Outlook.OlDefaultFolders.olFolderInbox)
The function "GetSharedDefaultFolder" the name.
If i change the code line into:
Dim olInbox As Outlook.MAPIFolder = olNamespace.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderInbox)
it works fine. But it count my e-mails and not the e-mails from our group postbox.
Here are the complete code:Private Sub PosteingangLesen()
Dim MailAnzahl, MailUngelesen
Dim olApp As Outlook.Application = New Outlook.Application
Dim olNamespace As Outlook.NameSpace = olApp.GetNamespace("mapi")
Dim olPostfach As Outlook.Recipient = olNamespace.CreateRecipient("Postfach - ITO SD4EMEA")'Dim olInbox As Outlook.MAPIFolder = olNamespace.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderInbox) '<== this line will be work fine, but counts the e-mails in my postbox.
Dim olInbox As Outlook.MAPIFolder = olNamespace.GetSharedDefaultFolder(olPostfach, Outlook.OlDefaultFolders.olFolderInbox) '<== this line will bring me the error code -624820215
MailAnzahl = olInbox.Items.Count
MailUngelesen = olInbox.UnReadItemCount
Label4.Text = "Postfach : " & PostfachName(1) & " Mails gesamt: " & MailAnzahl.ToString & " davon ungelesen: " & MailUngelesen
End SubWho can help me along?
Many thanks in advance.
Best regards,
Walter
Antworten
-
Hallo Walter,
dies ist der deutsche Teil der MSDN Foren, daher antworte ich in deutsch (wenn ich deinen Code betrachte ist das sowieso egal). Ich glaube Du solltest Dir den Gebrauch von GetSharedDefaultFolder in der Referenz von Microsoft.Office.Interop.Outlook nocheinmal anschauen, da ich den Eindruck gewonnen habe, Du verwendest die VBA Syntax.
Den Link findest Du hier:
http://msdn.microsoft.com/en-us/library/microsoft.office.interop.outlook.namespaceclass.getshareddefaultfolder.aspx
Schöne Grüße
Oliver- Als Antwort markiert Robert Breitenhofer Mittwoch, 25. November 2009 15:22
-
Hallo Oliver,
erstmal vielen Dank für Deine promte Antwort und sorry dafür, dass ich im deutsch Forum englisch geschrieben habe.
Der Tipp auf die Referenz war schon goldwert, jedoch war es dann leider noch nicht möglich auf den Posteingang unseres
Gruppenpostfach zuzugreifen. Ich erhielt immer noch die Fehlermeldung, dass Outlook mindesten einen Namen nicht kennt.
Der eigentlich Pferdefuss liegt wohl entweder an meinem Rechner (DNS Auflösung?) oder an unserem LDAP, da mein Account in einer anderen
Domain liegt als das Postfach - das ist allerdings nur eine Vermutung.
Jedenfalls kann ich das Postfach verbinden, wenn ich über die E-Mailadresse gehe und nicht den "CreateRecipient" auf den Displayname
des Postfachs setzte.
Das folgende kleine Codeschnipsel bringt mir den gewünschten Effekt:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim Mailanzahl As Integer
Dim objOutlook As Outlook._Application = New Outlook.Application()
Dim objNS As Outlook._NameSpace = objOutlook.Session
Dim objRecipient As Outlook.Recipient = objNS.CreateRecipient("UnserPostfach@Firma.com")
If objRecipient.Resolve Then
Dim objFolder As Outlook.MAPIFolder = objNS.GetSharedDefaultFolder(objRecipient, Outlook.OlDefaultFolders.olFolderInbox)
Label1.Text = "Postfach verbunden"
Mailanzahl = objFolder.UnReadItemCount
Label2.Text = "ungelesene Mails = " & Mailanzahl.ToString
Else
Label1.Text = "Postfach nicht verbunden"
End If
End Sub
Nochmals vielen Dank an Dich und schöne Grüße,
Walter- Als Antwort markiert Robert Breitenhofer Mittwoch, 25. November 2009 15:22
Alle Antworten
-
Hallo Walter,
dies ist der deutsche Teil der MSDN Foren, daher antworte ich in deutsch (wenn ich deinen Code betrachte ist das sowieso egal). Ich glaube Du solltest Dir den Gebrauch von GetSharedDefaultFolder in der Referenz von Microsoft.Office.Interop.Outlook nocheinmal anschauen, da ich den Eindruck gewonnen habe, Du verwendest die VBA Syntax.
Den Link findest Du hier:
http://msdn.microsoft.com/en-us/library/microsoft.office.interop.outlook.namespaceclass.getshareddefaultfolder.aspx
Schöne Grüße
Oliver- Als Antwort markiert Robert Breitenhofer Mittwoch, 25. November 2009 15:22
-
Hallo Oliver,
erstmal vielen Dank für Deine promte Antwort und sorry dafür, dass ich im deutsch Forum englisch geschrieben habe.
Der Tipp auf die Referenz war schon goldwert, jedoch war es dann leider noch nicht möglich auf den Posteingang unseres
Gruppenpostfach zuzugreifen. Ich erhielt immer noch die Fehlermeldung, dass Outlook mindesten einen Namen nicht kennt.
Der eigentlich Pferdefuss liegt wohl entweder an meinem Rechner (DNS Auflösung?) oder an unserem LDAP, da mein Account in einer anderen
Domain liegt als das Postfach - das ist allerdings nur eine Vermutung.
Jedenfalls kann ich das Postfach verbinden, wenn ich über die E-Mailadresse gehe und nicht den "CreateRecipient" auf den Displayname
des Postfachs setzte.
Das folgende kleine Codeschnipsel bringt mir den gewünschten Effekt:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim Mailanzahl As Integer
Dim objOutlook As Outlook._Application = New Outlook.Application()
Dim objNS As Outlook._NameSpace = objOutlook.Session
Dim objRecipient As Outlook.Recipient = objNS.CreateRecipient("UnserPostfach@Firma.com")
If objRecipient.Resolve Then
Dim objFolder As Outlook.MAPIFolder = objNS.GetSharedDefaultFolder(objRecipient, Outlook.OlDefaultFolders.olFolderInbox)
Label1.Text = "Postfach verbunden"
Mailanzahl = objFolder.UnReadItemCount
Label2.Text = "ungelesene Mails = " & Mailanzahl.ToString
Else
Label1.Text = "Postfach nicht verbunden"
End If
End Sub
Nochmals vielen Dank an Dich und schöne Grüße,
Walter- Als Antwort markiert Robert Breitenhofer Mittwoch, 25. November 2009 15:22