Seite 1 von 1
CoMatePlus Outlook E-Mails auslesen möglich ?
Verfasst: 22.07.2019 09:41
von IceBite
Hallo,
ich wollte mal so allgemein fragen ob es möglich ist E-Mails in CoMate auszulesen und diese dann z.b. in einer Liste anzuzeigen ?
so in etwa:
Code: Alles auswählen
Private Sub CommandButton2_Click()
Dim fMails As Object, mail As Object, txtContent As String, arrContent As Variant, objExcel As Object, wb As Object, sheet As Object, rngStart As Object, rngCurrent As Object, objOL As Object, fErledigt As Object
' Outlook Object erzeugen
Set objOL = CreateObject("Outlook.Application")
'Ordner in Outlook referenzieren
Set fMails = objOL.Session.Stores.Item("e@mail").GetRootFolder.folders.Item("Posteingang")
'Unterordner referenzieren in den die Mails verschoben werden wenn sie bearbeitet wurden
If fMails.Items.Count > 0 Then
'Workbook setzen
Set wb = ActiveWorkbook
'Daten kommen in erstes Worksheet
Set sheet = wb.Worksheets(1)
'Startzelle in Spalte A ermitteln
Set rngStart = sheet.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0)
Set rngCurrent = rngStart
For Each mail In fMails.Items
'Body extrahieren
txtContent = mail.Body
MsgBox mail.Subject
Next
Else
MsgBox "Keine Mails zum Bearbeiten im Ordner", vbExclamation
End If
Set objOL = Nothing
Set wb = Nothing
Set sheet = Nothing
Set mail = Nothing
End Sub
freue mich auf jede Antwort.
MfG IceBite
Re: CoMatePlus Outlook E-Mails auslesen möglich ?
Verfasst: 22.07.2019 10:07
von RSBasic
Ja, es ist möglich, aber ich habe mit PB-CoMate noch nie so richtig gearbeitet.
Geht es dir nur darum, die E-Mails aus einem IMAP- oder POP3-Konto auszulesen?
Alternativ könntest du auch folgende Bibliothek verwenden:
viewtopic.php?f=11&t=31435
Ansonsten kannst du im Forum nach "comate outlook" suchen. Soweit ich weiß gibt es irgendwo einen fertigen Beispielcode.
Re: CoMatePlus Outlook E-Mails auslesen möglich ?
Verfasst: 22.07.2019 15:05
von IceBite
RSBasic hat geschrieben:Ja, es ist möglich, aber ich habe mit PB-CoMate noch nie so richtig gearbeitet.
Geht es dir nur darum, die E-Mails aus einem IMAP- oder POP3-Konto auszulesen?
Alternativ könntest du auch folgende Bibliothek verwenden:
viewtopic.php?f=11&t=31435
Ansonsten kannst du im Forum nach "comate outlook" suchen. Soweit ich weiß gibt es irgendwo einen fertigen Beispielcode.
Nein sondern ein anderes Programm läuft neben Outlook und ich kann emails aus einer liste auswählen unddiese sollen dann in das programm importiert werden
Re: CoMatePlus Outlook E-Mails auslesen möglich ?
Verfasst: 22.07.2019 15:08
von NicTheQuick
Mal eine vielleicht blöde Frage: Wie funktioniert das CoMatePlus genau? Ich meine es wäre doch ein riesige Sicherheitslücke, wenn ein fremdes Programm einfach so Mails abgreifen könnte. Das muss doch bestimmt erst in Outlook registriert werden oder sowas.
Re: CoMatePlus Outlook E-Mails auslesen möglich ?
Verfasst: 22.07.2019 19:12
von mk-soft
COMate verwendet die vorhandenen Schnittstellen von den registrierten DLL´s mit späte Bindung.
Also das Interface IDispatch und somit wie es mit VB-Script oder VBA funktioniert.
Der Benutzer es Programm muss natürlich die Berechtigung auf dem PC haben.
Du kannst auch mit frühe Bindung arbeiten. Dazu hat Purebasic auch schon einige viele Interfaces bereits deklariert.
Wenn du ein funktionierendes Beispiel in VBS oder Java hast, kannst du auch ActiveScript verwenden...
Link:
Module ActiveScript
P.S.
Habe das gefunden...
Aber kein Outlook installiert
Function unread_mails()
'Funktion zum überprüfen auf neue Mails im Ordner "Posteingang"
'In Variable "u" wird die Anzahl der ungelesenen Nachrichten übergeben
Dim unread_items, mapi, inbox, mail
Set outObj = CreateObject("Outlook.Application")
u = 0 'Zähler ungelesene Nachrichten zurücksetzen
Set mapi = outObj.GetNamespace("MAPI")
Set inbox = mapi.GetDefaultFolder(6) 'Zeiger auf Posteingang setzten - Posteingang = Folder(6)
For Each mail In inbox.Items 'überprüfen auf ungelesene Mails
If mail.unread Then unread_items = unread_items + 1
Next
'Ausgabe als Msgbox
MsgBox "Sie haben " & unread_items & " ungelesene Mails in Ihrem Posteingang", vbOKOnly, "Posteingang überprüft"
End Function
Link:
https://hope-this-helps.de/serendipity/ ... n-289.html
Re: CoMatePlus Outlook E-Mails auslesen möglich ?
Verfasst: 08.08.2019 12:55
von Shardik
IceBite hat geschrieben:ich wollte mal so allgemein fragen ob es möglich ist E-Mails in CoMate auszulesen und diese dann z.b. in einer Liste anzuzeigen ?
Ich habe das folgende Beispiel erfolgreich getestet unter Windows 10 x64 Version 1809 mit PB 5.70 x86 und x64 und Outlook 2016 32-Bit. Vor dem ersten Start ist unbedingt der Verzeichnispfad zu COMatePLUS.PBI anzupassen.
Code: Alles auswählen
EnableExplicit
#olFolderInbox = 6
; ----- Maximale Anzahl an E-Mails, die aus Outlook ausgelesen werden sollen
#MaxCount = 50
XIncludeFile "Verzeichnispfad/zu/COMatePLUS.PBI" ; <== Anpassen!
Structure EMailEntry
ReceiveDate.S
Sender.S
Subject.S
EndStructure
Define EMailsIncomplete.I
NewList EMail.EMailEntry()
Procedure GetEMailInfosFromInbox(List EMail.EMailEntry())
Shared EMailsIncomplete.I
Protected EMail.COMateObject
Protected EMailCount.I
Protected i.I
Protected Inbox.COMateObject
Protected Items.COMateObject
Protected NameSpace.COMateObject
Protected Outlook.COMateObject
Outlook = COMate_CreateObject("Outlook.Application")
If Outlook
NameSpace = Outlook\GetObjectProperty("GetNamespace('MAPI')")
If NameSpace
Inbox = NameSpace\GetObjectProperty("GetDefaultFolder('" +
#olFolderInbox + "')")
If Inbox
Items = Inbox\GetObjectProperty("Items")
If Items
EMailCount = Items\GetIntegerProperty("Count")
If EMailCount > 0
If EMailCount > #MaxCount
EMailCount = #MaxCount
EMailsIncomplete = #True
EndIf
For i = 1 To EMailCount
EMail = Inbox\GetObjectProperty("Items(" + i + ")")
If EMail
AddElement(EMail())
EMail()\ReceiveDate = FormatDate("%dd.%mm.%yyyy %hh:%ii",
EMail\GetDateProperty("ReceivedTime"))
EMail()\Subject = EMail\GetStringProperty("Subject")
EMail()\Sender = EMail\GetStringProperty("SenderName")
EMail\Release()
EndIf
Next i
EndIf
Items\Release()
EndIf
Inbox\Release()
EndIf
NameSpace\Release()
EndIf
Outlook\Release()
EndIf
EndProcedure
OpenWindow(0, 0, 0, 600, 218, "",
#PB_Window_SystemMenu | #PB_Window_ScreenCentered)
ListIconGadget(0, 10, 10, WindowWidth(0) - 20, WindowHeight(0) -20,
"Empfangsdatum", 100, #PB_ListIcon_GridLines)
AddGadgetColumn(0, 1, "Absender", 159)
AddGadgetColumn(0, 2, "Betreff", 300)
GetEMailInfosFromInbox(EMail())
If EMailsIncomplete
SetWindowTitle(0, "Die aktuellsten " + #MaxCount +
" E-Mails in Outlooks Posteingang")
Else
SetWindowTitle(0, "E-Mails in Outlooks Posteingang: " + ListSize(EMail()))
EndIf
ForEach EMail()
With EMail()
AddGadgetItem(0, -1, \ReceiveDate + #LF$ + \Sender + #LF$ + \Subject)
EndWith
Next
Repeat
Until WaitWindowEvent() = #PB_Event_CloseWindow
Re: CoMatePlus Outlook E-Mails auslesen möglich ?
Verfasst: 08.01.2020 16:56
von Oliver13
Wenn man enthaltene Anlagen speichern will:
Code: Alles auswählen
Procedure GetEMailInfosFromInbox(List EMail.EMailEntry())
Shared EMailsIncomplete.I
Protected EMail.COMateObject
Protected EMailCount.I
Protected i.I
Protected Inbox1.COMateObject
Protected Inbox.COMateObject
Protected Items.COMateObject
Protected NameSpace.COMateObject
Protected Outlook.COMateObject
Protected Attachments.COMateObject
Protected Attachment.COMateObject
Outlook = COMate_CreateObject("Outlook.Application")
If Outlook
NameSpace = Outlook\GetObjectProperty("GetNamespace('MAPI')")
Protected sprop$="GetDefaultFolder('" + #olFolderInbox + "')"
If NameSpace
Inbox = NameSpace\GetObjectProperty(sprop$)
If Inbox
Items = Inbox\GetObjectProperty("Items")
If Items
EMailCount = Items\GetIntegerProperty("Count")
If EMailCount > 0
If EMailCount > #MaxCount
EMailCount = #MaxCount
EMailsIncomplete = #True
EndIf
For i = 1 To EMailCount
EMail = Inbox\GetObjectProperty("Items(" + i + ")")
If EMail
AddElement(EMail())
EMail()\ReceiveDate = FormatDate("%dd.%mm.%yyyy %hh:%ii",
EMail\GetDateProperty("ReceivedTime"))
EMail()\Subject = EMail\GetStringProperty("Subject")
EMail()\Sender = EMail\GetStringProperty("SenderName")
Attachments = Email\GetObjectProperty("Attachments")
Protected iAttachments=Attachments\GetIntegerProperty("Count")
Protected iAttachItem.i
Protected sfilename.s
For iAttachItem = 1 To iAttachments
Attachment = Attachments\GetObjectProperty("Item(" + iAttachItem + ")")
If attachment
sfilename= Attachment\GetStringProperty("FileName")
Attachment\Invoke("SaveAsFile('"+sfilename+"')")
Attachment\Release()
Endif
Next
Attachments\Release()
EMail\Release()
EndIf
Next i
EndIf
Items\Release()
EndIf
Inbox\Release()
EndIf
NameSpace\Release()
EndIf
Outlook\Release()
EndIf
EndProcedure