2012-03-31 6 views
2

Alles, was ich brauche, ist eine E-Mail in PoSh-Skript und sehen Sie sich das Thema an - mit pop3 oder imap, egal.
Ich habe versucht, eine Lösung zu finden, aber alles, was ich gefunden habe, ist entweder 3rd Party .net Assemblies, oder MS Exchange direkte Arbeit. Beide sind nicht angemessen.
So verwenden Sie SMTP und senden Sie E-Mail - es ist absolut klar, aber wie zu erhalten? Gibt es keine Standard-Assemblys wie System.Net.Mail?Erhalten Sie E-Mail mit PowerShell

+0

kann http://stackoverflow.com/questions/26606/free-pop3-net-library –

Antwort

1

Je nachdem, was Sie anvisieren, wäre NetCmdlets eine gute Lösung für IMHO.

http://www.powershellinside.com/powershell/netcmdlets/

Sie werden sowohl IMAP und POP-Unterstützung bemerken enthalten.

+0

überprüfen möchten Wie ich in Frage geschrieben - ich habe einige gesehen Lösungen mit .NET-Assemblies von Drittanbietern, einschließlich kommerzieller, aber das ist nicht angemessen. Die Frage ist - gibt es keine Standardlösung ähnlich wie smtp System.Net.Mail? – dmitry

+0

Ah, hab ich. Nichts in der BCL dafür, sorry. :( –

+0

FWIW, da die Frage sagte 3rd Party Assemblys, ich hatte gehofft, dass Cmdlets "besser" für Sie sein könnte. :) –

4

Hier ist ein Code, den ich auf C# verwendet habe. Ich habe die DLL in Powershell importiert und verwendet, um verschiedene Teile einer Nachricht abzurufen. Die verwendete DLL ist Imapx2, eine Open Source. Ich verstehe, dass Sie keine .NET-Assemblies von Drittanbietern verwenden möchten, aber dies könnte anderen Nutzern helfen, auf diesen Inhalt zuzugreifen.

### Import the dll 
[Reflection.Assembly]::LoadFile(“YourDirectory\imapx.dll”) 
### Create a client object 
$client = New-Object ImapX.ImapClient 
###set the fetching mode to retrieve the part of message you want to retrieve, 
###the less the better 
$client.Behavior.MessageFetchMode = "Full" 
$client.Host = "imap.gmail.com" 
$client.Port = 993 
$client.UseSsl = $true 
$client.Connect() 
$user = "User" 
$password = "Password" 
$client.Login($user,$password) 
$messages = $client.Folders.Inbox.Search("ALL", $client.Behavior.MessageFetchMode, 1000) 
foreach($m in $messages){ 
$m.Subject 
foreach($r in $m.Attachments){ 
$r | Out-File "Directory" 
    } 
} 

Ich hoffe, das war hilfreich