IMAPX mit Powershell nutzen um Emails abzufragen via IMAP

IMAP ist ein Protokoll, über dem man mit einem Mail Server kommunizieren kann, und beispielsweise Emails abzufragen. Es gibt eine ganze menge IMAP Komponenten im Netz verfügbar. Wegen einem Projekt musste ich mir ein paar davon anschauen und bin schlussendlich bei IMAPX stehen geblieben. Von allen gab es hier die meisten IMAP Funktionen und man kann es, dank der DLL, in eigene Projekte leicht einbinden.

Hier ein Beispiel Powershell Skript zum Abfragen von Emails im Posteingangsordner des Mail Servers:

# set path to libary
$lib = "C:\imapx.dll"
# Import the dll
[Reflection.Assembly]::LoadFile($lib)
# Create a imap object
$imap = New-Object ImapX.ImapClient
# set the fetching mode to retrieve message 
$imap.Behavior.MessageFetchMode = "Full"
# set address of IMAP server
$imap.Host = $server
# set port of server to provide IMAP
$imap.Port = $port
# use encrypted communication
$imap.UseSsl = $true
# try to connect the IMAP server
$imap.Connect()
# setting credantials
$user = "User"
$password = "Password"
# Login with given credentials
$imap.Login($user,$password)
# go and get the message at IMAP server
$messages = $imap.Folders.Inbox.Search("ALL", $imap.Behavior.MessageFetchMode, 1000)
#
foreach($m in $messages){
	write-host 'uid' $m.uid
	write-host 'subject' $m.Subject
	write-host 'from object' $m.from
	write-host 'DisplayName' $m.from.DisplayName
	write-host 'email Address' $m.from.Address
	# get either HTML or text version of the email
	#write-host 'mail body txt' $m.body.text
	write-host 'mail body html' $m.body.html
 }

Die IMAPX Komponente bietet eine Fülle von IMAP Funktionen, z.B. Löschen, Herunterladen, Verschieben, etc.

*UPDATE*

Das IMAPX Projekt wird schon eine ganze Zeit nicht mehr gepflegt. Ich habe meine IMAP Implementierungen nun auf MailKit umgestellt. Ich habe einen neuen Beitrag mit einem Beispiel für MailKit veröffentlicht.

http://www.agile-coding.net/imapx-mit-powershell-nutzen-um-emails-abzufragen-via-imap/