Existuje několik různých způsobů, jak poslat email pomocí Powershellu:
Odeslání emailu pomocí Outlooku
Outlook nemusí být spuštěn, aby následující funkce fungovala (první řádka skriptu otevírá novou instanci Outlooku). Pokud chcete odeslat email více příjemcům, tak je oddělujte ve skriptu čárkou:
Start-Process Outlook $o = New-Object -com Outlook.Application $mail = $o.CreateItem(0) $mail.subject = "Testovací zpráva" $mail.body = "První řádka`nDruhá řádka`nTřetí řádka" $mail.To = "muj.email@mojedomena.cz" $mail.Attachments.Add("C:\pokus.txt") $mail.Send() $o.Quit()
Odeslat email pomocí cmdletu
Opět, pokud chcete odeslat zprávu více příjemcům, pak je oddělujte čárkou. A všimněte si outlookového zápisu emailové adresy. Příklad je převzat z nápovědy.
send-mailmessage -to "User01 <user01@example.com>" -from "ITGroup <itdept@example.com>" -cc "User02 <user02@example.com>" -bcc "ITMgr <itmgr@example.com>" -subject "Don't forget today's meeting!" -credential domain01\admin01 -useSSL
Doplňující informace
Ověření (validace) emailové adresy
1. způsob pomocí .NET ()
function isEmailAddress($object) { ($object -as [System.Net.Mail.MailAddress]).Address -eq $object -and $object -ne $null} isEmailAddress "tobias" isEmailaddress "tobias@powershell.com" isEmailAddress $null
2. způsob pomocí regulárního výrazu
"My email is tobias.weltner@email.de and also tobias@powershell.de" | Select-String -AllMatches '\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b' | Select-Object -ExpandProperty Matches | Select-Object -ExpandProperty Value
Pozor Powershell vyhledá jen první výraz! Pokud chcete vyhledat všechny shodné výrazy musíte použít .NET jako v následujícím skriptu:
$text = 'multiple emails like tobias.weltner@email.de and tobias@powershell.de in a string' $emailpattern = '(?i)\b([A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4})\b' $emails = ([regex]$emailpattern).Matches($text) | ForEach-Object { $_.Groups[1].Value } $emails[0] "*" * 100 $emails