E-Mail Client für Kommandozeile

Mitglied: Androxin

Androxin (Level 2) - Jetzt verbinden

20.12.2016, aktualisiert 17:20 Uhr, 9843 Aufrufe, 52 Kommentare, 3 Danke

Moin, moin.

Ich bin gerade auf der Suche nach einem (Kommandozeilen-)Programm, das automatisch ein (IMAP) E-Mail Postfach öffnet und die Dateianhänge der ungelesenen Mails in ein Verzeichnis speichert.

Am liebsten wäre mir ein Powershell Script. Etwas anderes, notfalls auch unter Linux, würde aber auch gehen.

Hat jemand eine Idee oder zumindest einen Ansatz für mich?

Hintergrund:
Ich habe mehrere Faxgeräte, die die eingehenden Faxe lediglich als eine E-Mail weiterleiten und nicht direkt auf ein Netzlaufwerk ablegen können. Die angehängten TIFF-F Dateien möchte ich deshalb mit Hilfe eines Tools aus den E-Mails extrahieren und auf einem Server ablegen.


Beste Grüße und vielen Dank für die Hilfe

PS:
https://www.limilabs.com/blog/save-all-attachments-to-disk-using-imap
Das würde es zwar machen, ist aber VIEL zu teuer und kein "einfaches" Programm.
52 Antworten
Mitglied: 131381
20.12.2016, aktualisiert um 17:24 Uhr
Schau mal hier:
https://www.administrator.de/forum/linux-automatisiert-posteingang-check ...
Lässt sich sicher einfach anpassen das statt dem Text die Attachments abgelegt werden.

Powershell:
http://www.agile-coding.net/imapx-mit-powershell-nutzen-um-emails-abzuf ...

Gruß
Bitte warten ..
Mitglied: Androxin
20.12.2016 um 17:29 Uhr
Vielen Dank für den schnellen Denkanstoß.

Ich schau mir das mal an.
Bitte warten ..
Mitglied: aqui
20.12.2016, aktualisiert um 17:40 Uhr
Für einen Linuxer ne Lachnummer...

mailsend -to test123@web.de -from willi@androxin.de -starttls -port 587 -auth -smtp mail.web.de -sub Testmail +cc +bc -v -user androxin -pass "Geheim"

Zusätzlich mit Attachment kommt dann das dazu:
-attach "file.txt,text/plain"
-attach "/usr/file.gif,image/gif"
-attach "file.jpeg,image/jpg"

Beispiel mit der Datei "Tux.jpg" im Verzeichnis:

mailsend -to test123@web.de -from willi@androxin.de -starttls -port 587 -auth -smtp mail.web.de -sub Testmail +cc +bc -v -user androxin -pass "Geheim" -attach "Tux.jpg,image/jpg"

Das Kommando MUSS komplett in einer Zeile eingegeben werden !
Bitte warten ..
Mitglied: 131381
20.12.2016 um 17:38 Uhr
@aqui
Nur das er Mails nicht senden sondern empfangen will
Bitte warten ..
Mitglied: aqui
20.12.2016 um 17:39 Uhr
Ooops sorry... Da hatte ich wohl deine Sonnenbrille auf !!!
Bitte warten ..
Mitglied: colinardo
20.12.2016, aktualisiert 26.10.2020
- edit vom 21.06.2019 -

ACHTUNG HINWEIS: Der Attachment-Parser der DLL hat Probleme bei Mails in denen ein Mix aus Inline- und echten Attachments enthalten ist. Ich rate deswegen dringend zum Umstieg z.B. auf die .NET Bibliothek Mailkit.

Ein Beispiel mit der Mailkit Bibliothek habe ich hier unten im Thread gepostet.

imap_download_attachments_mailkit_324348.zip (.NET 4.5)


- end edit -
Servus Androxin,

habe dir mal ein Powershell-Skript mit der ImapX.dll Bibliothek geschrieben (zur Info: die kompilierte DLL ist gegen .NET 4.0 kompiliert):
Das Paket kannst du inkl. DLL hier herunterladen: imap_download_attachments_324348.zip

Die DLL habe ich deswegen ins Paket gepackt, da die Stable-Version die dort im Moment zum Download steht einen Bug hat der verhindert das Attachments heruntergeladen werden können. Dieser ist aber in dem letzten Patch behoben. Du kannst dir die DLL auch mit den Sourcen und Visual Studio selbst kompilieren wenn du willst.

Das Skript durchläuft alle ungelesenen Nachrichten im Posteingang und speichert alle Attachments in einem Ordner. Sollte im Downloadordner schon eine Datei mit dem gleichen Namen existieren, wird an den Dateinamen so lange eine Zahl angehängt bis ein Dateiname frei ist. Danach wird die Nachricht als "gelesen" markiert.

Der QuellCode des Scripts (Variablen / IMAP Parameter im Kopf anpassen)
Grüße Uwe
Bitte warten ..
Mitglied: Xaivia
16.07.2018 um 14:19 Uhr
Zuallerst Danke für dieses Scirpt und Super auskommentiert direkt beim ersten mal verstanden danke dafür.
Ich bin noch ein bisschen grün hinter den ohren was PS angeht hier meine Frage/mein Problem

"The selected authentication mechanism is not supported"
Hast du eine Lösung für das Problem
Der Mailserver ist hier im eigenen Netz Microsoft Exchange muss ich dafür noch irgnedwas anderes machen oder bin ich gerade der "DAU" der es nicht versteht.

Gruß
Sebastian
Bitte warten ..
Mitglied: Androxin
16.07.2018 um 14:42 Uhr
Zitat von Xaivia:


"The selected authentication mechanism is not supported"
Hast du eine Lösung für das Problem
Der Mailserver ist hier im eigenen Netz Microsoft Exchange muss ich dafür noch irgnedwas anderes machen oder bin ich gerade der "DAU" der es nicht versteht.

Lässt sich dein Exchange überhaupt über IMAP ansprechen? Normalerweise nutzt der übrigens MAPI.
Bitte warten ..
Mitglied: colinardo
16.07.2018, aktualisiert um 14:54 Uhr
Zitat von Androxin:
Lässt sich dein Exchange überhaupt über IMAP ansprechen? Normalerweise nutzt der übrigens MAPI.
Ja man muss es nur aktivieren, und für den User muss es in den Client Access Settings ebenfalls aktiviert sein und die Firewall muss es natürlich durchlassen.
Bitte warten ..
Mitglied: BlueEyePhoenix
21.09.2018 um 11:08 Uhr
Hallo,

kann man dieses Script auch soweit anpassen das es nur aus einer bestimmten Email einen Anhang speichert? Suche so einen ähnlichen befehl der halt nach absender oder Betreff nur von der einen Email den Anhang speichert.
Bitte warten ..
Mitglied: colinardo
21.09.2018, aktualisiert um 11:44 Uhr
Zitat von BlueEyePhoenix:
kann man dieses Script auch soweit anpassen das es nur aus einer bestimmten Email einen Anhang speichert? Suche so einen ähnlichen befehl der halt nach absender oder Betreff nur von der einen Email den Anhang speichert.
Ja. Einfach eine If-Abfrage der Subject-Eigenschaft machen,
oder effektiver gleich in der IMAP Search Phrase die passenden Nachrichten ausfiltern.
Sucht in diesem Beispiel ungelesene Nachrichten mit einem Betreff der "Testnachricht" enthält.
Bitte warten ..
Mitglied: albin63
26.11.2018 um 00:49 Uhr
Hallo

ich habe auch noch leider eine kleine Fehler, wo ich nicht weiter komme. Bitte euch um Hilfe.

Da die Fehlermeldung:

Es ist nicht möglich, eine Methode für einen Ausdruck aufzurufen, der den NULL hat.
In C:\albin\sw\mail.ps1:33 Zeichen:5

$messages = $imap.Folders.Inbox.Search("UNSEEN",[ImapX.Enums.MessageFetchMod ...

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

+ CategoryInfo : InvalidOperation: ( [], RuntimeException
+ FullyQualifiedErrorId : InvokeMethodOnNull


Das ist die einzige Anpassung von mir selber in der Zeile 18
Add-Type -Path "$PSScriptRoot\ImapX.dll"
auf
Add-Type -Path "C:\albin\sw\ImapX.dll"


Lieber Gruss
Albin
Bitte warten ..
Mitglied: colinardo
26.11.2018, aktualisiert um 11:58 Uhr
Servus Albin, willkommen auf Administrator.de!
Das ist die einzige Anpassung von mir selber in der Zeile 18
Add-Type -Path "$PSScriptRoot\ImapX.dll"
auf
Add-Type -Path "C:\albin\sw\ImapX.dll"
Das wäre schlecht wenn das die einzigste Änderung wäre die du vorgenommen hättest, denn dann wären IMAP Server, Benutzernamen, Password etc. natürlich nicht passend .
Zitat von albin63:
Es ist nicht möglich, eine Methode für einen Ausdruck aufzurufen, der den NULL hat.
In C:\albin\sw\mail.ps1:33 Zeichen:5
$messages = $imap.Folders.Inbox.Search("UNSEEN",[ImapX.Enums.MessageFetchMod ...
Also das ist so, normalweise erkennt IMAPX die sogenannten Common-Folder wie Inbox, Trash, und Co. anhand von Flags die auf den Ordnern gesetzt sind automatisch. Da es aber eine vielzahl an IMAP-Servern gibt und leider noch nicht jeder diese speziellen Flags setzt kann IMAPX hier sehr wahrscheinlich deine Inbox nicht ermitteln und das Objekt hinter $imap.Folders.Inbox ist dann leer, deswegen auch die Meldung das er eine Methode eines leeren Objekts nicht aufrufen kann.
Was du nun machst ist folgendes:
Lass dir mit
alle Ordner auflisten und dann ersetzt du die Zeile in der die Nachrichten gesucht werden durch:
Gibst also den Namen deines Inbox Ordners explizit an.

Das sollte meiner Glaskugel zufolge das Problem bei dir beheben. Ansonsten helfe ich gerne auch via PN.

Grüße Uwe
Bitte warten ..
Mitglied: novregen
07.12.2018 um 12:16 Uhr
Hallo Uwe,

kann man sowas auch auf einem Raspberry einsetzen oder einer Synology ?
Bitte warten ..
Mitglied: colinardo
07.12.2018, aktualisiert um 13:00 Uhr
Servus @novregen ,
Wenn du da Powershell Core drauf knallst würde auch das über Umwege funktionieren, aber für Linux machst du das besser gleich mit Python oder Perl, oder den sonstigen Kommandozeilentools die es extra dafür gibt. (mutt, alpine, sup, notmuch,...)
Mit Python hatte ich hier ebenfalls schon mal etwas Code gepostet.
Genauer gesagt in folgendem Beitrag:
https://administrator.de/forum/linux-automatisiert-posteingang-checken-s ...

Grüße Uwe
Bitte warten ..
Mitglied: aqui
07.12.2018, aktualisiert um 13:02 Uhr
So klappts auf dem RasPi. Allerdings nur das Versenden von Emails.
Zusätzlich wenn du ein Attachment mitsenden willst kommt das dazu:
-attach "file.txt,text/plain"
-attach "/usr/file.gif,image/gif"
-attach "file.jpeg,image/jpg"


Beispiel mit der Bild Datei "Tux.jpg" im Verzeichnis:
Wichtig ist das das mailsend Kommando eine komplette Zeile ist !
man mailsend sagt dir wie es geht.
Bitte warten ..
Mitglied: colinardo
07.12.2018, aktualisiert um 13:03 Uhr
@aqui ich glaube er möchte keine Mail senden sondern den Posteingang checken, davon handelt der Thread hier ja primär .
Bitte warten ..
Mitglied: aqui
07.12.2018, aktualisiert um 13:05 Uhr
Stimmt ! Hab die Antwort etwas angepasst
Hier wäre ggf. ein Ansatz...
https://cdn-learn.adafruit.com/downloads/pdf/raspberry-pi-e-mail-notifie ...
Bitte warten ..
Mitglied: novregen
14.12.2018 um 13:05 Uhr
Ja ich möchte nur email abrufen ggfs. prüfen ob die email von adresse xx ist und dann den anhang auf der synology ablegen.
Gibt es da vielleicht auch was fertiges ? oder kann man das auch mit der Syno Email hinkriegen ?
Bitte warten ..
Mitglied: colinardo
21.06.2019, aktualisiert 15.08.2019

! UPDATE !

Für alle die den oben stehenden Code mit der IMAPX Bibliothek noch verwenden und auf Probleme mit korrupten Attachments stoßen, es ist nicht euer Fehler! Es ist ein Bug der IMAPX.DLL beim Attachment Parsing wodurch korrupte Attachments entstehen wenn Inline-Attachments vorhanden sind. Hinweis wurde oben explizit ergänzt. Da das Projekt nicht mehr gepflegt wird wird wohl der Bug auch nicht mehr behoben.

Deswegen, und da das Feedback auf diesen Thread doch sehr groß ist, poste ich hier noch eine Alternative auf Basis der MAILKIT .NET Bibliothek.

Die nötigen DLLs könnt Ihr euch über NuGet ziehen oder euch aus den Quellen bauen

Doku findet ihr hier:
http://www.mimekit.net/docs/html/Introduction.htm

Für alle die das Skript inklusive DLLs fertig runterladen möchten, könnt Ihr das hier tun:

imap_download_attachments_mailkit_324348.zip (.NET 4.5)


Viel Spaß
Grüße Uwe
Bitte warten ..
Mitglied: vogtmi
01.07.2019 um 14:49 Uhr
Hallo Uwe,

nach relativ kurzem Suchen habe ich Dein Skript gefunden. Das ist genau das was ich brauche, allerdings funktioniert es bei mir nicht.
Beim Statement:

$imap.Connect($IMAP_HOST,$IMAP_PORT,[MailKit.Security.SecureSocketOptions]::SslOnConnect)

kommt folgende Fehlermeldung:

Index was outside the bounds of the array.
At C:\batchskripten\getEmailAttachments.ps1:39 char:5

$imap.Connect($IMAP_HOST,$IMAP_PORT,[MailKit.Security.SecureSocketOptions]:: ...

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

+ CategoryInfo : OperationStopped: ( [], IndexOutOfRangeException
+ FullyQualifiedErrorId : System.IndexOutOfRangeException


an was kann das denn liegen?

Vielen Dank im Voraus.

Grüße Michael
Bitte warten ..
Mitglied: colinardo
01.07.2019, aktualisiert um 14:57 Uhr
Servus Michael.
Die falschen DLLs nicht fürs passende .NET genommen, bzw. nicht alle eingebunden.

Grüße Uwe
Bitte warten ..
Mitglied: vogtmi
01.07.2019 um 16:26 Uhr
Super, vielen Dank. Dann checke ich das mal.

Viele Grüße, Michael
Bitte warten ..
Mitglied: vogtmi
03.07.2019 um 12:34 Uhr
Hallo Uwe,

irgendwie komme ich nicht weiter. Das Skript soll auf einem Windows Server 2012 R2 Datacenter laufen.
Hier ist das Microsoft .NET Framework 4 Multi- Targeting Pack installiert. Ich habe das .NET 4.8 dazu Installiert, aber es klappt immer noch nicht.

Auf meinem Notebook W10 Pro geht alles.

Kann man bei der Powershell irgendwie einstellen, welches .NET verwendet werden soll?

Grüße,
Michael
Bitte warten ..
Mitglied: colinardo
03.07.2019, aktualisiert um 15:32 Uhr
Bitte Management Framework aktualisieren, lüppt hier damit hier auf Server 2012R2 einwandfrei.
Bitte warten ..
Mitglied: vogtmi
03.07.2019 um 15:46 Uhr
Suuuuper, jetzt läuft es.

Vielen tausend Dank!!!
Bitte warten ..
Mitglied: colinardo
03.07.2019 um 15:47 Uhr
Keine Ursache .
Bitte warten ..
Mitglied: vogtmi
11.10.2019 um 11:29 Uhr
Hallo Uwe,

wir haben mit dem Skript noch ein kleines Problem. Wenn eine Email nur mit Anhang verschickt wird, also ohne Mailbody, werden die Anhänge nicht gespeichert.

Hast Du vielleicht hierfür auch eine Lösung parat?

Danke un Gruß,

Michael
Bitte warten ..
Mitglied: colinardo
11.10.2019, aktualisiert um 15:02 Uhr
Zitat von vogtmi:
wir haben mit dem Skript noch ein kleines Problem. Wenn eine Email nur mit Anhang verschickt wird, also ohne Mailbody, werden die Anhänge nicht gespeichert.
Servus,
hier getestet, keine Probleme. Du hast wahrscheinlich oben das alte Skript mit ImapX.dll verwendet. Es steht oben deutlich das diese Bibliothek Probleme mit dem Attachment-Parser hat. Deswegen die oben verlinkte neue Variante mit Mailkit nutzen!

Grüße Uwe
Bitte warten ..
Mitglied: vogtmi
14.10.2019 um 08:33 Uhr
Hallo Uwe,

nein nein, ich habe schon die Maikit Variante im Einsatz. Im Webmail Postfach von IONOS sehen diese Emails auch anders aus. Die Büroklammer für das Attachment fehlt in der Übersicht. Ich habe vermutet das liegt am fehlenden Mailbody.

VG Michael
Bitte warten ..
Mitglied: colinardo
14.10.2019, aktualisiert um 09:43 Uhr
Zitat von vogtmi:

Hallo Uwe,

nein nein, ich habe schon die Maikit Variante im Einsatz. Im Webmail Postfach von IONOS sehen diese Emails auch anders aus. Die Büroklammer für das Attachment fehlt in der Übersicht. Ich habe vermutet das liegt am fehlenden Mailbody.
Nein, definitv nicht, wurde hier mehrfach verifiziert.
Wenn die Klammer fehlt ist die Mail entweder nicht standardkonform erstellt worden oder es sind sogenannte Inline-Attachments, diese sind dann gesondert zu behandeln! Das Skript behandelt in dem Beispiel nur "echte" Attachments, Inline-Attavhments wie Bilder die direkt im Mailbody sichtbar sind sind gesondert zu behandeln.

Btw. Lass dich nicht von Webmailern und GUIs täuschen. Als Fakten zählt hier nur das was hinten raus kommt, die RAW Daten der Mail.
Schau dir Mal die Header an und prüfe mit welchem Client die Mail erstellt wurde.
Bitte warten ..
Mitglied: vogtmi
14.10.2019 um 11:46 Uhr
Die "fehlerhaften" Mails werden von SAP erstellt und unsere Lieferanten können oder wollen hier nichts anpassen.
Bitte warten ..
Mitglied: colinardo
14.10.2019, aktualisiert um 12:15 Uhr
Habe dir eine PN geschickt, du kannst mir gerne so eine Mail mal zukommen lassen wenn das deine/eure Policy zulässt dann kann ich mir des Problems mal annehmen.
Möchtest/kannst du das aus Gründen nicht kannst du dich gerne auch mal selbst um das Debugging kümmern.
Dazu lass dir doch mal in der Schleife eine Ausgabe erzeugen.
Hinter folgende Zeile
$attachments = $m.Attachments | ?{$_.IsAttachment}
Lass dir für einen Vergleich mal folgendes ausgeben.
Einmal die gefilterten Attachments
und zweitens mal das ursprüngliche Array der Attachments mit
Könnte ja irgendwie sein das die Attachments nicht als solche erkannt und deswegen nicht mit dem entsprechenden Flag versehen werden.

Weitergehend kannst du auch die Variable $m und deren Eigenschaften BodyParts, Body usw ausgeben lassen um raus zu finden was an der Mail nicht ganz koscher ist.
Wenn das für dich zu hoch sein sollte, übernehme ich das wie gesagt gerne für dich sofern das Weiterleiten einer Originalnachricht für dich machbar ist.

Grüße Uwe
Bitte warten ..
Mitglied: Fly998
25.10.2019 um 13:29 Uhr
Hallo Uwe,

ich habe das Script bei mir auch mal getestet und muss sagen, das funktioniert echt gut. Ich habe aber noch eine Frage, kann ich das Speichern der Anhänge auch auf spezielle Dateiendungen einschränken?

Viele Grüße
Marco
Bitte warten ..
Mitglied: colinardo
25.10.2019, aktualisiert um 13:39 Uhr
Hallo Marco.
Zitat von Fly998:
ich habe das Script bei mir auch mal getestet und muss sagen, das funktioniert echt gut. Ich habe aber noch eine Frage, kann ich das Speichern der Anhänge auch auf spezielle Dateiendungen einschränken?
Ja kein Problem, folgende Zeile in der die Attachments vor ausgefiltert werden einfach eine weitere Bedingung ergänzen, hier im Beispiel wären es *.txt und *.pdf welche übernommen werden
Grüße Uwe
Bitte warten ..
Mitglied: Fly998
28.10.2019 um 07:36 Uhr
Vielen Dank, funktioniert super !
Bitte warten ..
Mitglied: Fly998
15.11.2019 um 10:01 Uhr
Hallo Uwe,

prinzipiell läuft das echt gut, bei manchen Mails / Anhängen erhalte ich aber folgenden Fehler:

Fehler
Error with Attachment: 'Rechnung: 3500096258.PDF' of Message with ID
'ADR440000006183217000A79C05AF9691EEA81D656C6734FED11@absenderdomian.com': Ausnahme beim Aufrufen von "Create" mit 1
Argument(en): "Das angegebene Pfadformat wird nicht unterstützt."
In Zeile:1 Zeichen:1

Hast du hier eine Idee zu`?

Viele Grüße
Marco
Bitte warten ..
Mitglied: colinardo
15.11.2019, aktualisiert um 10:17 Uhr
Servus Marco.
Das angegebene Pfadformat wird nicht unterstützt."
Jepp, Pfad wird bei dir zu lang. (>255 Zeichen), oder Dateiname enthält ungültige Zeichen. In dem Fall musst du Abkürzungs-/Replacement-maßnahmen für den Namen der Attachments treffen.

Grüße Uwe
Bitte warten ..
Mitglied: Fly998
15.11.2019 um 10:58 Uhr
Hallo Uwe,

zu lang ist der Pfad nicht, der hat nur 50 Zeichen. Vermutlich ist es dann ein ungültiges Zeichen. Im Dateiname ist ein _ sowie ein -
Können die das Problem sein? Bzw. Was ist denn ein ungültiges Zeichen?

Viele Grüße
Marco
Bitte warten ..
Mitglied: colinardo
15.11.2019, aktualisiert um 11:03 Uhr
Zitat von Fly998:
zu lang ist der Pfad nicht, der hat nur 50 Zeichen.
Inklusive Dateiname des Attachments?
Vermutlich ist es dann ein ungültiges Zeichen. Im Dateiname ist ein _ sowie ein -
Können die das Problem sein?
Nein.
Bzw. Was ist denn ein ungültiges Zeichen?
https://docs.microsoft.com/en-us/windows/win32/fileio/naming-a-file

Wenn du den "alten" IMAPX.DLL Code von oben benutzt dann wäre das natürlich die primäre Fehlerquelle. Zuverlässig mit Attachments geht nur die verlinkte Mailkit-Variante um.
Bitte warten ..
Mitglied: Fly998
15.11.2019 um 11:35 Uhr
ich denke ich habe es gefunden... da ist ein : im Dateinamen.
Beim Speichern aus dem Webmail wird daraus direkt ein _ gemacht, daher ist mir das nicht gleich aufgefallen. Mal schauen ob ich hierzu eine Lösung finde.

Danke Uwe
Bitte warten ..
Mitglied: mabo75
18.12.2019 um 21:59 Uhr
Hallo Uwe,
das ist genau was ich gesucht habe. Hatte leider erst die vorige Variante.

Gibt es auch die Möglichkeit das die eMail dann gelöscht wird ... ?

Also an dieser Stelle ?
# markiere die Nachricht als gelesen
$imap.Inbox.AddFlags($id,[MailKit.MessageFlags]::Seen,$true)

Gruss Maik
Bitte warten ..
Mitglied: colinardo
18.12.2019, aktualisiert um 22:58 Uhr
Servus Maik,
richtig hier setzt du das Flag auf "Deleted"
und an der Stelle an der der Ordner geschlossen wird noch den Boolean Wert auf True setzen.
Dieser löst das Expunge des Ordners aus und entfernt zum löschen markierte Nachrichten endgültig aus der Inbox.

Grüße Uwe
Bitte warten ..
Mitglied: generalbase
18.02.2020 um 10:29 Uhr
Hey zusammen,

ich hab irgendwie ein generelle Problem mit dem script. Ich bekomme immer folgende Meldung:

Es handet sich um ein Postfach bei Strato.

Habe auch schon die verschiedenen connect Varianten versucht:
http://www.mimekit.net/docs/html/T_MailKit_Security_SecureSocketOptions ...

Danke für die Hilfe
gruß
gb
Bitte warten ..
Mitglied: colinardo
18.02.2020, aktualisiert um 12:43 Uhr
Hallo @generalbase,
also ich habe den Connect zu Strato (genutzter Server imap.strato.de auf Port 993) hier mal vollzogen, geht einwandfrei.
Auch der Test zu imap.strato.de:993 mit OpenSSl liefert gültige Zertifikate zurück, wie man hier sieht:
Ich tippe daher bei dir darauf das du entweder den falschen Common-Name zum Verbinden verwendest oder noch die alten Telesec-Root CA Zertifikate in deinem Zertifikate-Store verwendest. Die Zertifikate der Telekom Root-CA wurde vor einigen Monaten zurückgezogen (da von Symantec ausgestellt). Da diese nun ungültig sind kommt es zu dieser Fehlermeldung. Also stelle sicher das du die aktuellen Telesec-CA Zertifikate im System installiert hast.
https://www.telesec.de/de/24-news/664-zertifikatsablauf-deutsche-telekom ...

Man kann zwar das Prüfen der Zertifikate im Skript über einen Server-ValidationCallback abschalten, würde ich aber nicht empfehlen.

Grüße Uwe

p.s. Bitte wende dich für weitere Fragen dazu direk per PN an mich, damit der Thread hier nicht zugemüllt wird! Danke.



-edit- Problem hat sich geklärt. User @generalbase verwendete einen Virenscanner der sich in die Verbindung mit einem selbstsignierten Zertifikat eingeklinkt hat um die Verbindung zu überwachen.
Bitte warten ..
Mitglied: jelden
21.08.2020, aktualisiert um 11:55 Uhr
Hallo,

habe gerade das Skript installiert und konfiguriert. Alle Dateien sind in einem Verzeichnis unter C:/Benutzer/praxis/ und die Ausfahrterlaubnis ist auf "unrestricted" gesetzt. Ich habe die IMAP-Daten von Gmail in den header eingetragen.

Jetzt bekomme aber folgende Fehlermeldungen:

Add-Type : Die Datei oder Assembly "file:///C:\Users\Praxis\imap_download\MailKit.dll" oder eine Abhängigkeit davon
wurde nicht gefunden. Der Vorgang wird nicht unterstützt. (Ausnahme von HRESULT: 0x80131515)
In C:\Users\Praxis\imap_download\script.ps1:19 Zeichen:1

Add-Type -Path "$PSScriptRoot\MailKit.dll" -EA Stop

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

+ CategoryInfo : NotSpecified: ( [Add-Type], FileLoadException
+ FullyQualifiedErrorId : System.IO.FileLoadException,Microsoft.PowerShell.Commands.AddTypeCommand

Add-Type : Die Datei oder Assembly "file:///C:\Users\Praxis\imap_download\MimeKit.dll" oder eine Abhängigkeit davon
wurde nicht gefunden. Der Vorgang wird nicht unterstützt. (Ausnahme von HRESULT: 0x80131515)
In C:\Users\Praxis\imap_download\script.ps1:20 Zeichen:1

Add-Type -Path "$PSScriptRoot\MimeKit.dll" -EA Stop

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

+ CategoryInfo : NotSpecified: ( [Add-Type], FileLoadException
+ FullyQualifiedErrorId : System.IO.FileLoadException,Microsoft.PowerShell.Commands.AddTypeCommand

Add-Type : Die Datei oder Assembly "file:///C:\Users\Praxis\imap_download\BouncyCastle.Crypto.dll" oder eine
Abhängigkeit davon wurde nicht gefunden. Der Vorgang wird nicht unterstützt. (Ausnahme von HRESULT: 0x80131515)
In C:\Users\Praxis\imap_download\script.ps1:21 Zeichen:1

Add-Type -Path "$PSScriptRoot\BouncyCastle.Crypto.dll" -EA Stop

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

+ CategoryInfo : NotSpecified: ( [Add-Type], FileLoadException
+ FullyQualifiedErrorId : System.IO.FileLoadException,Microsoft.PowerShell.Commands.AddTypeCommand

md : Das Laufwerk wurde nicht gefunden. Ein Laufwerk mit dem Namen "T" ist nicht vorhanden.
In C:\Users\Praxis\imap_download\script.ps1:24 Zeichen:33

if (!(Test-Path $DOWNLOADPATH)){md $DOWNLOADPATH -Force | out-null}

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

+ CategoryInfo : ObjectNotFound: (T:String) [New-Item], DriveNotFoundException
+ FullyQualifiedErrorId : DriveNotFound,Microsoft.PowerShell.Commands.NewItemCommand

New-Object : Der Typ [MailKit.Net.Imap.ImapClient] kann nicht gefunden werden. Stellen Sie sicher, dass die Assembly,
die diesen Typ enthält, geladen wird.
In C:\Users\Praxis\imap_download\script.ps1:31 Zeichen:13

$imap = New-Object MailKit.Net.Imap.ImapClient

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

+ CategoryInfo : InvalidType: ( [New-Object], PSArgumentException
+ FullyQualifiedErrorId : TypeNotFound,Microsoft.PowerShell.Commands.NewObjectCommand

Damit kann ich leider nix anfangen, gibt es einen Tip wie ich weitermachen kann?

danke,
Michael
Bitte warten ..
Mitglied: colinardo
21.08.2020, aktualisiert um 11:59 Uhr
Servus Michael,
offensichtlich noch Powershell Neuling . Speichere es als Skript *.ps1 ab und führe erst dann aus sonst ist die Variable $psscriptroot nicht gefüllt und er findet die DLL's im selben Verzeichnis nicht.
Zusätzlich stelle sicher das deine Powershell (Management Framework) und .NET Framework aktuell ist.

Du hättest mich dafür auch direkt per PN anschreiben können.

Grüße Uwe
Bitte warten ..
Mitglied: colinardo
21.08.2020, aktualisiert um 13:49 Uhr
Nur nochmal um Missverständnisse aufzuklären die offensichtlich so mancher User hier hat.

Wenn man das ZIP-File unter Windows herunterlädt und es über die OS eigene ZIP Entpack-Routine entpackt, markiert Windows die DLLs erst mal aus Sicherheitsgründen als "Aus dem Internet heruntergeladen" und vertraut diesen erst einmal nicht, und das Skript schlägt mit den Fehlermeldungen die der User @jelden oben zeigt, fehl weil den DLLs ja erst mal nicht vertraut wird.

Das lässt sich einfach beheben indem man bei allen mitgelieferten DLLs diese einmalig über das Kontextmenü als vertrauenswürdig markiert.

screenshot - Klicke auf das Bild, um es zu vergrößern

Danach sollte das Skript das Verhalten nicht mehr zeigen.

Ich werde das noch im Skript nachträglich automatisieren. #edit 21.08.2020#: (Ist nun enthalten und wird automatisch freigeschaltet)

Grüße Uwe
Bitte warten ..
Mitglied: Fly998
26.10.2020 um 15:01 Uhr
Hallo Uwe,

ich habe das Script nun auch schon eine Weile laufen. Dabei ist mir aufgefallen das ich mit den immer gleichen Absendern Probleme haben.
Die angehängten Dateien werden vom Script nicht erkannt. Er liest die Mail korrekt, findet aber keinen Anhang.
Beim anschauen der Mail ist mir aufgefallen das der Anhang scheinbar im "mail Quelltext" nicht als Atachment definiert ist:
mail - Klicke auf das Bild, um es zu vergrößern

Hast du dazu eine Idee?

Viele Grüße
Marco
Bitte warten ..
Mitglied: colinardo
26.10.2020, aktualisiert um 16:52 Uhr
Servus Marco,
Hast du dazu eine Idee?
ja, wie du schon richtig bemerkt hast hat da jemand das Wörtchen "attachment" vergessen im "Content-Disposition" Header und damit sind diese BodyParts keine echten Attachments und logischerweise filtert das Skript diese aus weil es die Property $_.IsAttachment im Where Object prüft. Da aber das Wörtchen "attachment" fehlt, klassifiziert Mailkit diese korrekterweise auch als keine "normalen" Attachments und die "Attachments" Auflistung ist leer.
Wenn du auch diese für deinen speziellen Empfänger erfassen willst musst du die Property BodyParts http://www.mimekit.net/docs/html/P_MimeKit_MimeMessage_BodyParts.htm mit einem where-object durchlaufen und den ContentDisposition prüfen und dann diese als Attachments zu behandeln.

Einfaches Beispiel für den Mailkit Code
Mit einem angepassten Regex könntest du auch nach Dateiendungen filtern um nicht evt. Bilder im Mailbody mit zu erfassen. Hier z.B nur für solche als PDF Attachments
Da bist du also vollkommen frei in der Definition was für dich ein Attachment ist und was nicht. Dafür kann Mailkit nichts wenn der Absender die Mails nicht nach Vorschrift verschickt . In solchen Fällen sollte man den Absender zusätzlich auch mal höflich darauf hinweisen das er nicht nach Standard arbeitet sofern möglich, das kommt dann auch anderen zu gute .

Grüße Uwe
Bitte warten ..
Mitglied: Fly998
26.10.2020 um 17:30 Uhr
Hallo Uwe,

wie immer ein sehr hilfreiches Kommentar von dir.
Für einige meiner Problemkandidanten hat dies geholfen, für ein paar spezielle Fälle habe ich noch folgende Zeile eingefügt:

Viele Grüße
Marco
Bitte warten ..
Mitglied: colinardo
26.10.2020, aktualisiert um 18:03 Uhr
Da hat sich wohl einer mit der CPAN Bib beim Mail erstellen versucht und dabei raus gekommen ist so ne Wurst .

Grüße Uwe
Bitte warten ..
Heiß diskutierte Inhalte
LAN, WAN, Wireless
RJ45 Buchsen Verbindung
gelöst DennisAdm1nFrageLAN, WAN, Wireless18 Kommentare

Ich habe als Aufgabe bekommen die LAN-Verbindung in einem Haus zu fixen, dabei ist mir aufgefallen, dass der RJ45-Stecker ...

Windows 10
Windows10 Hilfsprogramme endgültig löschen
istike2FrageWindows 1013 Kommentare

Hallo, wir sind gerade dabei mit Windows OOBE ein Image vorzubereiten. Wir würden gerne Xbox, HP Hilfsprogramme, Cortana usw. ...

Windows 10
Achtung: Upgrade auf Win10 20H2 löscht unter Umständen eigene Zertifikate
DerWoWussteInformationWindows 1013 Kommentare

Microsoft untersucht es derzeit, siehe Windows 10 ,Feature Update to 1909, Certificates missing after Wer ebenso untersuchen möchte was ...

Windows 10
Windows 7 zu Windows 10 weiterhin kostenlos möglich?
gelöst CubeHDFrageWindows 1013 Kommentare

Guten Abend, ist es möglich einen vorhandenen Windows 7 Key für Windows 10 zu verwenden? Kennt ihr vielleicht andere ...

LAN, WAN, Wireless
Suche Access Point Wandhalterung
gelöst EZimmerFrageLAN, WAN, Wireless11 Kommentare

Einen schöne guten Tag, wir haben uns bei einer Ausschreibung beteiligt und sind nun auch der Suche nach folgendem ...

Windows 10
Windows 10 NTP Zeitsynchronisation Windows Domäne (local cmos clock) Uhrzeit und Datum synchronisiert nicht
gelöst frunkyFrageWindows 1010 Kommentare

Hallo Zusammen, ich habe in meiner Domäne (Windows Server 2019) mit Windows 10 Pro als Clients Probleme mit der ...

Ähnliche Inhalte
Windows 10
E-Mail Client für ehbehinderte
AkcentFrageWindows 105 Kommentare

Hallo, ich suche für eine sehbehinderte Frau einen E-Mail Client der einfach und nur mit der Tastatur bedient werden ...

E-Mail
E-Mail-Client für Smartphone
MiStFrageE-Mail16 Kommentare

Guten Morgen, ich möchte ein paar Geschäfts-Smartphones (Android, Apple) mit einem E-Mail-Client ausstatten, auf dem ein Exchangekonto konfiguriert ist ...

E-Mail

E-Mail-Client für iOS und Android OHNE Cache

ahstaxFrageE-Mail9 Kommentare

Hallo, ich suche für iOS- und Android-Handys einen Mailclient, vorzugsweise den gleichen, mit dem man auf einen Exchange-Server (Exchange ...

E-Mail

Zertifikat e-mail

planarFrageE-Mail8 Kommentare

Hallo, ich bin gerade dabei mir einen Überblick zu verschaffen. Es geht um Zertifikate um einen sicheren e-mail Verkehr ...

Datenschutz

E-mail Verschlüsselung

gelöst j1m3e84FrageDatenschutz13 Kommentare

Hallo Forum User, ich bin neu hier im Forum und möchte mich hiermit erstmal an der Teilnahme am Forum ...

E-Mail

Weiterleitung von E-Mail

gelöst raba34FrageE-Mail6 Kommentare

Hallo ihr alle, ich möchte bewirken, dass auf meinen Mailservern (exim und postfix) eingehende Mails wie folgt weitergeleitet werden: ...

Berechtigungs- und IdentitätsmanagementBerechtigungs- und IdentitätsmanagementWebdienste und -serverWebdienste und -serverDatenbankenDatenbankenMonitoring & SupportMonitoring & SupportHybrid CloudHybrid CloudSmall Business ITSmall Business IT