K.inc Tec Blog

Mein kleines EDV Logbuch

Tag: email

PowerShell Mail senden

Authentifiziertes Senden

$MailFrom = "absender@domain.de"
$MailTo = "empfaenger@domain.de"
$Username = "Benutzername@domain.de"
$Password = "Password"
$SmtpServer = "mail.domain.de"
$SmtpPort = "25"
$MessageSubject = "Mail Betreff"
$Message = New-Object System.Net.Mail.MailMessage $MailFrom,$MailTo
$Message.IsBodyHTML = $true
$Message.Subject = $MessageSubject
$Message.Body = @'
<!DOCTYPE html>
<html>
<head>
</head>
<body>
Testnachricht
</body>
</html>
'@
$Smtp = New-Object Net.Mail.SmtpClient($SmtpServer,$SmtpPort)
$Smtp.EnableSsl = $true
$Smtp.Credentials = New-Object System.Net.NetworkCredential($Username,$Password)
$Smtp.Send($Message)

Attachments können wie folgt hinzugefügt und entfernt werden:

$Message.Attachments.Add("C:\test.txt")
$Message.Attachments.Add("C:\test.txt")

# Über Index entfernen
$Message.Attachments.RemoveAt("0")
$Message.Attachments.RemoveAt("1")

Header können mit folgendem Befehl hinzugefügt werden:

$Message.Headers.Add("X-Test-Header","Daten")

Anonymes Senden

Mit folgender einfachen Funktion kann man über Powershell emails anonym, also ohne Benutzeraccount, an einen Mailserver senden. Bitte vorher die Empfänger, das From und den Mailserver anpassen.

function Send-Mail($subject, $body="", $attachments="", $highpriority=$false)
{
$msgTo = @("rcp1@domain.de", "rcp2@domain.de")
$msgFrom = "$($env:computername)@domain.de"

$mailServer = ""

$utf8 = New-Object System.Text.utf8encoding

$anonUsername = "anonymous"
$anonPassword = ConvertTo-SecureString -String "anonymous" -AsPlainText -Force
$anonCredentials = New-Object System.Management.Automation.PSCredential($anonUsername,$anonPassword)

if ($highpriority -and $attachments.length -gt 0) {
    send-mailmessage -to $msgTo -from $msgFrom -subject $subject -body $body -smtpServer $mailServer -credential $anonCredentials -encoding $utf8 -priority High -Attachments $attachments
}
elseif ($attachments.length -gt 0) {
    send-mailmessage -to $msgTo -from $msgFrom -subject $subject -body $body -smtpServer $mailServer -credential $anonCredentials -encoding $utf8 -Attachments $attachments
}
elseif ($highpriority) {
    send-mailmessage -to $msgTo -from $msgFrom -subject $subject -body $body -smtpServer $mailServer -credential $anonCredentials -encoding $utf8 -priority High
}
else {
    send-mailmessage -to $msgTo -from $msgFrom -subject $subject -body $body -smtpServer $mailServer -credential $anonCredentials -encoding $utf8 
}
}

Anmerkungen:

Das Script baut eine anonyme Verbindung mit dem Mailserver auf. Der Mailserver benötigt hierzu also einen EmpfangsConnector (MS Exchange), der anonyme Verbindungen von dem Host erlaubt, auf dem das Script ausgeführt wird.

Spam Blockliste auf Funktion prüfen

Hier eine Einleitung in die Funktion von Blocklisten, wie man sie manuell abfragt und welche Blocklisten momentan brauchbar sind.

Weiterlesen

© 2016 kinc.de