none
Counting e-mails from a shared inbox RRS feed

  • 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 Sub

    Who can help me along?
    Many thanks in advance.
    Best regards,
    Walter

    Samstag, 14. November 2009 18:44

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
    Sonntag, 15. November 2009 16:00
  • 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
    Montag, 16. November 2009 19:11

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
    Sonntag, 15. November 2009 16:00
  • 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
    Montag, 16. November 2009 19:11