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]
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]
Comment