Via Powershell eine Mail verschicken über Exchange
Hi@All,
nettes Cmdlet
Jetzt kann ich bei smtp Server eintragen was ich will. Entweder kann er den Namen nicht auflösen oder er wirft einen Fehler:
Wenn ich einen Mailprovider habe dort kenne ich ja auch den SMTP Server, aber was trage ich Hausintern da ein?
Habe schon den Exchange probiert so wie er bei uns im Outlook eingetragen wird, aber das ging auch nicht.
Grüße
nettes Cmdlet
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function Send-SMTPmail($to, $from, $subject, $body, $attachment, $cc, $bcc, $port, $timeout, $smtpserver, [switch] $html, [switch] $alert) {
if ($smtpserver -eq $null) {$smtpserver = "smtp.myserver.com"}
$mailer = new-object Net.Mail.SMTPclient($smtpserver)
if ($port -ne $null) {$mailer.port = $port}
if ($timeout -ne $null) {$mailer.timeout = $timeout}
$msg = new-object Net.Mail.MailMessage($from,$to,$subject,$body)
if ($html) {$msg.IsBodyHTML = $true}
if ($cc -ne $null) {$msg.cc.add($cc)}
if ($bcc -ne $null) {$msg.bcc.add($bcc)}
if ($alert) {$msg.Headers.Add("message-id", "<3bd50098e401463aa228377848493927-1>")}
if ($attachment -ne $null) {
$attachment = new-object Net.Mail.Attachment($attachment)
$msg.attachments.add($attachment)
}
$mailer.send($msg)
}
1
send-SMTPmail -to max@test.de -from max@test.de -subject "Congratulations!" -smtpserver "domain.de" -body "test"
Jetzt kann ich bei smtp Server eintragen was ich will. Entweder kann er den Namen nicht auflösen oder er wirft einen Fehler:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
************** Ausnahmetext **************
System.Management.Automation.MethodInvocationException: Ausnahme beim Aufrufen von "Send" mit 1 Argument(en): "Fehler beim Senden von Mail." ---> System.Net.Mail.SmtpException: Fehler beim Senden von Mail. ---> System.IO.IOException: Von der Übertragungsverbindung können keine Daten gelesen werden: net_io_connectionclosed.
bei System.Net.Mail.SmtpReplyReaderFactory.ProcessRead(Byte buffer, Int32 offset, Int32 read, Boolean readLine)
bei System.Net.Mail.SmtpReplyReaderFactory.ReadLines(SmtpReplyReader caller, Boolean oneLine)
bei System.Net.Mail.SmtpReplyReaderFactory.ReadLine(SmtpReplyReader caller)
bei System.Net.Mail.SmtpConnection.GetConnection(String host, Int32 port)
bei System.Net.Mail.SmtpTransport.GetConnection(String host, Int32 port)
bei System.Net.Mail.SmtpClient.GetConnection()
bei System.Net.Mail.SmtpClient.Send(MailMessage message)
--- Ende der internen Ausnahmestapelüberwachung ---
bei System.Net.Mail.SmtpClient.Send(MailMessage message)
bei Send(Object , Object )
bei System.Management.Automation.MethodInformation.Invoke(Object target, Object arguments)
bei System.Management.Automation.DotNetAdapter.AuxiliaryMethodInvoke(Object target, Object arguments, MethodInformation methodInformation, Object originalArguments)
--- Ende der internen Ausnahmestapelüberwachung ---
bei System.Management.Automation.DotNetAdapter.AuxiliaryMethodInvoke(Object target, Object arguments, MethodInformation methodInformation, Object originalArguments)
bei System.Management.Automation.DotNetAdapter.MethodInvokeDotNet(String methodName, Object target, MethodInformation methodInformation, Object arguments)
bei System.Management.Automation.DotNetAdapter.MethodInvoke(PSMethod method, Object arguments)
bei System.Management.Automation.Adapter.BaseMethodInvoke(PSMethod method, Object arguments)
bei System.Management.Automation.PSMethod.Invoke(Object arguments)
bei System.Management.Automation.ParserOps.CallMethod(Token token, Object target, String methodName, Object paramArray, Boolean callStatic, Object valueToSet)
bei System.Management.Automation.MethodCallNode.InvokeMethod(Object target, Object arguments, Object value)
bei System.Management.Automation.MethodCallNode.Execute(Array input, Pipe outputPipe, ExecutionContext context)
bei System.Management.Automation.ParseTreeNode.Execute(Array input, Pipe outputPipe, ArrayList& resultList, ExecutionContext context)
bei System.Management.Automation.StatementListNode.ExecuteStatement(ParseTreeNode statement, Array input, Pipe outputPipe, ArrayList& resultList, ExecutionContext context)
Wenn ich einen Mailprovider habe dort kenne ich ja auch den SMTP Server, aber was trage ich Hausintern da ein?
Habe schon den Exchange probiert so wie er bei uns im Outlook eingetragen wird, aber das ging auch nicht.
Grüße
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 147552
Url: https://administrator.de/forum/via-powershell-eine-mail-verschicken-ueber-exchange-147552.html
Ausgedruckt am: 27.04.2025 um 07:04 Uhr
4 Kommentare
Neuester Kommentar

-smtpserver "domain.de" ist falsch, da muss entweder den FQDN oder die IP des Exchange stehen. Außerdem muss der Exchange anonymes SMTP erlauben.
Müssen die Parameter nicht in der richtigen Reihenfolge übergeben werden, wie in der Funktion angegeben?
Müssen die Parameter nicht in der richtigen Reihenfolge übergeben werden, wie in der Funktion angegeben?