Announcement

Collapse
No announcement yet.

Zugriff auf Outlook: Kann eMail nicht finden

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Zugriff auf Outlook: Kann eMail nicht finden

    Hallo zusammen,

    ich habe 2 Methoden. Die erste erstellt eine neue eMail ,versendet sie und gibt die EntryId der Mail zurück. Die 2. Methode nimmt diese EntryId und soll sich anhand dessen, die eMail aus dem "Gesendet"-Ordner holen und als Datei auf dem Filesystem (im Temp-Ordner) ablegen.

    Methode 1 funktioniert wunderbar. Aber Methode 2 findet die eMail nicht wieder.

    Kann mir jemand sagen was ich falsch (und besser) machen kann?

    Methode 1:
    [highlight=vb.net]
    Public Function SendMail(ByVal adressTo As String, ByVal mailBetreff As String, ByVal mailText As String, _
    ByVal mailLesebestaetigung As Boolean, ByVal doSend As Boolean, _
    ByVal adressCC As String, ByVal adressBCC As String, _
    ByVal mailAnhaenge() As String, ByVal mailWichtigkeit As Integer, _
    ByVal mailSignatur As String) As String
    Dim olApp As Outlook.Application
    Dim oItem As Outlook.MailItem
    Dim mailId As String = ""

    Try
    'Outlook-Objekt anlegen:
    olApp = OutlookApp
    oItem = olApp.CreateItem(Outlook.OlItemType.olMailItem)
    With oItem
    'Adressen:
    .To = adressTo
    .CC = adressCC
    .BCC = adressBCC

    'Nachricht:
    .Subject = mailBetreff
    If mailText <> "" Then
    mailText = MakeHtmlText(mailText, True, True)
    mailText = mailText & "<br/><br/>"
    End If
    'Text und Signatur zusammen bringen
    .HTMLBody = mailText & mailSignatur
    .Importance = mailWichtigkeit

    'Anhänge:
    If Not mailAnhaenge Is Nothing Then
    For Each anhang As String In mailAnhaenge
    .Attachments.Add(anhang)
    Next
    End If

    'Abschicken oder Anzeigen:
    .ReadReceiptRequested = mailLesebestaetigung
    .Save()
    mailId = .EntryID
    If doSend Then
    .Send()
    Else
    .Display()
    End If
    End With
    Catch ex As Exception
    Trace.ErrorTrace2File(ex.ToString)
    F_Meldung("EMAILVERSANDFEHLER", "An error occured during sending email", ex.Message)
    mailId = ""
    End Try
    Return mailId
    End Function
    [/highlight]

    Methode 2:
    [highlight=vb.net]
    Public Sub SaveMailAsFile(ByVal mailID As String)
    Dim objFolder As Object
    Dim storeId As String
    Dim oItem As Outlook.MailItem
    Dim tmpDir As String = F_SmpTempDir()
    Try
    objFolder = Me.OutlookNS.GetDefaultFolder(Outlook.OlDefaultFol ders.olFolderSentMail)
    storeId = objFolder.StoreID
    oItem = Me.OutlookNS.GetItemFromID(mailID, storeId)
    oItem.SaveAs(tmpDir & "\\eMail.msg")
    Catch ex As Exception
    Trace.ErrorTrace2File(ex.ToString)
    MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
    End Try
    End Sub
    [/highlight]

  • #2
    Irgendwie so:
    [highlight=vb]
    Public Sub SaveMailAsFile(ByVal mailID As String)
    Dim o as ApplicationClass = new ApplicationClass();
    Dim outlookNS as NameSpace
    outlookNS = o.GetNamespace("MAPI");
    Dim objFolder as MAPIFolder
    objFolder= o.Session.GetDefaultFolder(OlDefaultFolders.olFold erInbox); ' olFolderSentMail
    Dim oItem as MailItem
    oItem = (MailItem)outlookNS.GetItemFromID(mailID, mFolder.StoreID);
    oItem.SaveAs(tmpDir & "\\eMail.msg")
    End Sub
    [/highlight]
    Bitte vergessen Sie nicht die Antwort zu bewerten. Danke.:-)

    Comment


    • #3
      Nein, das führt leider zum selben Resultat.
      Ich habe das Gefühl, das Outlook im Moment des Senden die eMail aus dem Entwürfe Ordner, wo sie nach meinem Save() ist, löscht und eine "neue" eMail mit einer neuen ID im Gesendet-Ordner erstellt.
      An diese neue ID muss ich dann also ran kommen. Das muss doch irgendwie gehen, oder?

      Comment

      Working...
      X