{"id":1163,"date":"2015-05-22T13:55:50","date_gmt":"2015-05-22T11:55:50","guid":{"rendered":"http:\/\/blog.langlitz-it.de\/?p=1163"},"modified":"2017-08-10T12:56:50","modified_gmt":"2017-08-10T10:56:50","slug":"how-to-mailversand-uber-powershell","status":"publish","type":"post","link":"https:\/\/www.langlitz-it.de\/?p=1163","title":{"rendered":"How to &#8211; Mailversand \u00fcber PowerShell"},"content":{"rendered":"<p>Die <em>PowerShell<\/em> bietet umfangreiche M\u00f6glichkeiten, um Mails zu versenden. Sie k\u00f6nnen Mails mit oder ohne Authentifizierung und mit oder<br \/>\nohne Anhang versenden. Selbst das Format k\u00f6nnen Sie frei bestimmen. Eine M\u00f6glichkeit ist, sich die Mail mit allen ben\u00f6tigten Informationen<br \/>\nzusamenzubauen. Ab <em>PowerShell 2.0<\/em> gibt es aber auch das <em>cmdLet Send-MailMessage<\/em>. Ich werde auf beide Varianten eingehen.<\/p>\n<h3>Mailversand mit Script \u00fcber Exchange<\/h3>\n<p>Dazu ben\u00f6tigen Sie ein neues Object eines <em>SMTP-CLients<\/em>, einer <em>MailMessage<\/em> und eines <em>Attachements<\/em>. Sie m\u00fcssen den <em>SMTP Server<\/em> mit angeben<br \/>\nsowie einen Absender und einen Empf\u00e4nger. Ein Betreff, eine Formatangabe oder auch ein Inhalt ist nicht zwingend erforderlich,<br \/>\naber doch hilfreich :-). Am einfachsten fassen Sie die ben\u00f6tigten Informationen in einer Funktion zusammen, die Sie dann aus dem jeweiligen<br \/>\nScript heraus aufrufen:<\/p>\n<p><em>function mailsend($Mail)<\/em><br \/>\n<em> {<\/em><br \/>\n<em> $smtpclient = New-Object system.net.mail.smtpclient<\/em><br \/>\n<em> $mailmessage = New-Object system.net.mail.mailmessage<\/em><br \/>\n<em> $file = &#8220;c:\\_Marco\\test.txt&#8221;<\/em><br \/>\n<em> $attachment = New-Object system.net.mail.attachment($file)<\/em><br \/>\n<em> $smtpclient.host = &#8220;smtp.domain.de&#8221;<\/em><br \/>\n<em> $mailmessage.from = &#8220;absender@domain.de&#8221; <\/em><br \/>\n<em> $mailmessage.to.add(&#8220;empfaenger@domain.de&#8221;) <\/em><br \/>\n<em> $mailmessage.attachements.add($file)<\/em><br \/>\n<em> $mailmessage.subject = &#8220;Betreff&#8221;<\/em><br \/>\n<em> $mailmessage.isBodyHtml = $True<\/em><br \/>\n<em> $mailmessage.Body = $Mail<\/em><br \/>\n<em> $smtpclient.send($mailmessage)<\/em><br \/>\n<em> }<\/em><\/p>\n<p><em>$Mail = &#8220;Hier steht der Text der Mail&#8221;<\/em><\/p>\n<p><em>mailsend $mail<\/em><\/p>\n<p>Sie k\u00f6nnen als Empf\u00e4nger auch mehrere Adressen eintragen. Dazu trennen Sie diese einfach mit einem Komma &#8220;empf1@domain.de,empf2@domain.de,empf3@domain.de&#8221;.<br \/>\nAuch CC und BCC ist m\u00f6glich. Und nat\u00fcrlich mehrere Attachments.<\/p>\n<h3>Mailversand \u00fcber Provider (Beispiel Strato)<\/h3>\n<p>Betrachten wir dazu das gleiche Script. Ich habe nun noch die Angabe der Credentials mit eingebaut. Es ist nat\u00fcrlich darauf zu achten, dass<br \/>\ndie meisten Provider nur noch verschl\u00fcsselte Anmeldungen\u00a0zulassen. Also m\u00fcssen Sie <em>SSL<\/em> verwenden. \u00dcber das <em>cmdLet get-credential<\/em> werden Username<br \/>\nund Passwort eingelesen.<\/p>\n<p><em>function mailsend($Mail)<\/em><br \/>\n<em> {<\/em><br \/>\n<em> $smtpclient = New-Object system.net.mail.smtpclient<\/em><br \/>\n<em> $mailmessage = New-Object system.net.mail.mailmessage<\/em><br \/>\n<em> $file = &#8220;c:\\_Marco\\test.txt&#8221;<\/em><br \/>\n<em> $attachment = New-Object system.net.mail.attachment($file)<\/em><br \/>\n<em> $smtpuser = get-credential<\/em><br \/>\n<em> $smtpclient.host = &#8220;smtp.strato.de&#8221;<\/em><br \/>\n<em> $smtpclient.credentials = $smtpuser<\/em><br \/>\n<em> $smtpclient.enablessl = $True<\/em><br \/>\n<em> $mailmessage.from = &#8220;absender@langlitz-it.de&#8221; <\/em><br \/>\n<em> $mailmessage.to.add(&#8220;empfaenger@domain.de&#8221;) <\/em><br \/>\n<em> $mailmessage.attachments.add($file)<\/em><br \/>\n<em> $mailmessage.subject = &#8220;Betreff&#8221;<\/em><br \/>\n<em> $mailmessage.isBodyHtml = $True<\/em><br \/>\n<em> $mailmessage.Body = $Mail<\/em><br \/>\n<em> $smtpclient.send($mailmessage)<\/em><br \/>\n<em> }<\/em><\/p>\n<p><em>$Mail = &#8220;Hier steht der Text der Mail&#8221;<\/em><\/p>\n<p><em>mailsend $mail<\/em><\/p>\n<p>Nach Aufruf des Scripts erfolgt dann die Eingabe der Credentials:<\/p>\n<p><a href=\"http:\/\/blog.langlitz-it.de\/wp-content\/uploads\/2015\/05\/get-credential.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1165\" src=\"http:\/\/blog.langlitz-it.de\/wp-content\/uploads\/2015\/05\/get-credential.jpg\" alt=\"get-credential\" width=\"331\" height=\"263\" srcset=\"https:\/\/www.langlitz-it.de\/wp-content\/uploads\/2015\/05\/get-credential.jpg 331w, https:\/\/www.langlitz-it.de\/wp-content\/uploads\/2015\/05\/get-credential-300x238.jpg 300w\" sizes=\"(max-width: 331px) 100vw, 331px\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<h3>Mail Versand \u00fcber das <em>cmdLet Send-MailMessage<\/em><\/h3>\n<p>Ab der <em>PowerShell 2.0<\/em> gibt es dieses <em>cmdLet<\/em>. Hier werden ganz einfach die n\u00f6tigen Informationen als Parameter \u00fcbergeben.<\/p>\n<p><em>Send-MailMessage -From &#8220;absender@domain&#8221; -To &#8220;empf1@domain&#8221; -Subject &#8220;Betreff der Mail&#8221; -Body &#8220;Inhalt der Mail&#8221; -SmtpServer &#8220;smtp.domain.de&#8221;<\/em><\/p>\n<p>Hierbei gibt es nat\u00fcrlich auch all die Funktionen wie Anmeldung, Attachment, etc.<\/p>\n<p>Hier das ganze noch mal ausf\u00fchrlicher:<\/p>\n<p><em>$Cred = get-credential<\/em><br \/>\n<em>Send-MailMessage -Attachments C:\\_Marco\\test.txt -From &#8220;Absender@domain.de&#8221; -Body &#8220;Inhalt&#8221; -Subject &#8220;Betreff&#8221; -SmtpServer &#8220;smtp.strato.de&#8221; -Credential $cred -To &#8220;Empfaenger@domain.de&#8221; -UseSsl<\/em><\/p>\n<p>Viel Spass damit<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Die PowerShell bietet umfangreiche M\u00f6glichkeiten, um Mails zu versenden. Sie k\u00f6nnen Mails mit oder ohne Authentifizierung und mit oder ohne Anhang versenden. Selbst das Format k\u00f6nnen Sie frei bestimmen. Eine M\u00f6glichkeit ist, sich die Mail mit allen ben\u00f6tigten Informationen zusamenzubauen. &hellip; <a href=\"https:\/\/www.langlitz-it.de\/?p=1163\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[495,494,500,496,493,497,499,498],"_links":{"self":[{"href":"https:\/\/www.langlitz-it.de\/index.php?rest_route=\/wp\/v2\/posts\/1163"}],"collection":[{"href":"https:\/\/www.langlitz-it.de\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.langlitz-it.de\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.langlitz-it.de\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.langlitz-it.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1163"}],"version-history":[{"count":5,"href":"https:\/\/www.langlitz-it.de\/index.php?rest_route=\/wp\/v2\/posts\/1163\/revisions"}],"predecessor-version":[{"id":2019,"href":"https:\/\/www.langlitz-it.de\/index.php?rest_route=\/wp\/v2\/posts\/1163\/revisions\/2019"}],"wp:attachment":[{"href":"https:\/\/www.langlitz-it.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1163"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.langlitz-it.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1163"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.langlitz-it.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1163"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}