Email mit Anhang über Powershell?
Ich hätte da mal eine frage.... unzwar wie man eine email mit powershell und mit anhang versendet. weiß bis jetzt bloß wie ich email ohne anhang versende
jetzt ist für mich da noch die frage wie ich noch eine Datei bzw ein Ordner hinzufügen kann.....
habe auch schon länger gesucht aber nichts davon hat funktioniert......
LG TaubeTecInc
$EmailFrom = "email@server.com"
$EmailTo = "email@gmail.com"
$Subject = "Test Subject"
$Body = "Test Body"
$SMTPServer = "smtp.gmail.com"
$SMTPClient = New-Object Net.Mail.SmtpClient($SmtpServer, 587)
$SMTPClient.EnableSsl = $true
$SMTPClient.Credentials = New-Object System.Net.NetworkCredential("email@gmail.com", "Password");
$SMTPClient.Send($EmailFrom, $EmailTo, $Subject, $Body)
habe auch schon länger gesucht aber nichts davon hat funktioniert......
LG TaubeTecInc
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 360931
Url: https://administrator.de/contentid/360931
Ausgedruckt am: 25.11.2024 um 00:11 Uhr
21 Kommentare
Neuester Kommentar
Servus.
Alternative dazu schau dir Send-MailMessage an.
Beispiel:
Gibts hier im Forum schon unendlich vieeeeeele Beispiele .
Grüße Uwe
Function sendmail($FROM,$TO,$SUBJECT,$BODY,[System.IO.FileInfo[]]$ATTACHMENTS = $null){
$SMTPHOST = "smtp.server.de"
$SMTPPORT = 587
$SMTPUSER = "USERNAME"
$SMTPPass = "PASSWORD"
$SMTPClient = New-object System.Net.Mail.SmtpClient($SMTPHOST,$SMTPPORT)
$SMTPClient.EnableSsl = $true
$Mail = new-object System.Net.Mail.MailMessage
$Mail.from = $FROM
$Mail.to.add($TO)
$SMTPClient.Credentials = new-object System.Net.NetworkCredential($SMTPUSER,$SMTPPass)
$Mail.Subject = $SUBJECT
$Mail.Body = $BODY
# Add Attachments
if ($ATTACHMENTS){
foreach ($att in $ATTACHMENTS){
$Mail.Attachments.Add($att.FullName)
}
}
$SMTPClient.Send($Mail)
$smtpclient.Dispose()
$mail.Dispose()
}
sendmail "from@domain.de" "to@domain.tld" "DEIN BETREFF" "DER INHALT" (gci 'D:\Ordner\*.txt')
Beispiel:
Send-MailMessage -From "user@domain.de" -to "empfaenger@domain.de" -Subject "Dienst läuft nicht" -SmtpServer smtp.domain.de -Credential (New-Object PSCredential("USERNAME",(ConvertTo-SecureString 'PASSWORD' -AsPlainText -Force))) -UseSSL -Attachments "C:\datei1.txt","C:\datei2.txt"
Grüße Uwe
SMTP für unsichere Clients hast du bei Google in den Einstellungen freigeschaltet? Das ist Voraussetzung sonst geht das nicht!
Geht hier einwandfrei ebenfalls mit Send-MailMessage ...
Geht hier einwandfrei ebenfalls mit Send-MailMessage ...
Send-MailMessage -From "user@gmail.com" -to 'empfaenger@domain.de' -Subject "Betreff" -Body 'Musterbody' -SmtpServer 'smtp.gmail.com' -Credential (New-Object PSCredential('user@gmail.com',(ConvertTo-SecureString 'PASSWORD' -AsPlainText -Force))) -UseSSL -Port 587 -Attachments "C:\datei.txt"
Hier aktivieren:
https://support.google.com/accounts/answer/6010255?hl=en
https://support.google.com/accounts/answer/6010255?hl=en
Zitat von @TaubeTecInc:
ja habe es ausprobier, nun geht das erstmal...... ABER.....
die Datei ist 3kb groß...... also eigendlich ja nichts.....
Das hat nichts mit der Größe und auch nichts mit der Powershell zu tun, Google blockt bestimmte potentiell gefährliche Attachments by default und blockt den Versand dann.ja habe es ausprobier, nun geht das erstmal...... ABER.....
- Send-MailMessage
- Speicherzuordnung überschritten. Die Serverantwort war: 5.7.0 This message was blocked because its content presents a potential
die Datei ist 3kb groß...... also eigendlich ja nichts.....
https://support.google.com/mail/answer/6590?hl=de
Zitat von @TaubeTecInc:
dann scheinen cmd Dateien nicht zu gehen...... mal gucken ob es mit einem ordner klappt
Musst du dann zippen, das ist normal. E-Mail Clients blocken diese Anhänge ja sowieso meist zusätzlich per Default.dann scheinen cmd Dateien nicht zu gehen...... mal gucken ob es mit einem ordner klappt
In Gmail blockierte Dateitypen
Nicht anhängbare Dateitypen
ADE, ADP, BAT, CHM, CMD, COM, CPL, EXE, HTA, INS, ISP, JAR, JS (NEU), JSE, LIB, LNK, MDE, MSC, MSI, MSP, MST, NSH, PIF, SCR, SCT, SHB, SYS, VB, VBE, VBS, VXD, WSC, WSF, WSH
Zitat von @TaubeTecInc:
ok danke, dann muss ich das halt als rar oder zip Datei machen, aber trotzdem danke dir.....
Falls du es brauchen kannst ...ok danke, dann muss ich das halt als rar oder zip Datei machen, aber trotzdem danke dir.....
Compress-Archive
oder bei älteren Powershell-Versionen die Klasse System.IO.Compression.FileSystem nutzen:
Mit Powershell eine Datei zippen und verschlüsseln
Joa das sacht ming Frau auch immer jeden Abend, da fängt man gerade an sich aufzuwärmen da ist die immer schon fertig ....
Hallo Uwe,
das funktioniert sehr gut, vielen Dank.
Ich habe das Problem, wenn ich die Datei nach dem Verschicken löschen will kommt die Fehlermeldung:
Wie lässt die Funktion die Datei wieder los?
Danke Dir
Mike
das funktioniert sehr gut, vielen Dank.
Ich habe das Problem, wenn ich die Datei nach dem Verschicken löschen will kommt die Fehlermeldung:
remove-item : Das Element C:\test\helpling.zip kann nicht entfernt werden: Der Prozess kann nicht auf die Datei
"C:\test\helpling.zip" zugreifen, da sie von einem anderen Prozess verwendet wird.
In Zeile:4 Zeichen:1
+ remove-item helpling.zip
+ ~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : WriteError: (C:\test\helpling.zip:FileInfo) [Remove-Item], IOException
+ FullyQualifiedErrorId : RemoveFileSystemItemIOError,Microsoft.PowerShell.Commands.RemoveItemCommand
Wie lässt die Funktion die Datei wieder los?
Danke Dir
Mike
Servus Uwe,
vielen Dank. Das hat wieder ganz gut funktioniert.
Darf ich Dich noch etwas fragen?
Ich habe Dateien in einem Verzeichnis und wollte mit
Er läuft auch einmal durch, aber bei der nächsten Datei geht es nicht mehr.
Was mache ich hier falsch?
Ich dachte, mit dir kann eine die Dateien auslesen und dann werden die 3 Befehle abgearbeitet.
Danke Dir
Mike
vielen Dank. Das hat wieder ganz gut funktioniert.
Darf ich Dich noch etwas fragen?
Ich habe Dateien in einem Verzeichnis und wollte mit
dir | rename-item -newName helpling.zip ; sendmail ( xxx ); remove-item helpling.zip
Er läuft auch einmal durch, aber bei der nächsten Datei geht es nicht mehr.
Was mache ich hier falsch?
Ich dachte, mit dir kann eine die Dateien auslesen und dann werden die 3 Befehle abgearbeitet.
Danke Dir
Mike
Zitat von @q166132:
Ich habe Dateien in einem Verzeichnis und wollte mit
Er läuft auch einmal durch, aber bei der nächsten Datei geht es nicht mehr.
Was mache ich hier falsch?
Ich dachte, mit dir kann eine die Dateien auslesen und dann werden die 3 Befehle abgearbeitet.
Nein das geht mit obiger Funktion so nicht da sie nicht auf Pipeline-Arbeiten ausgelegt ist (kann man anpassenwenn man will mache ich jetzt aber nicht, gibt ja bessere Alternativen wie Send-MailMessage (s.o.). Außerdem ist ein simples "dir" sehr fehlerträchtig das damit auch Ordner inkludiert werden, und noch diverse andere schwere Fehler wie mehrfaches umbenennen mehrerer Dateien in ein und den selben Namen. Das was du vermutlich meinst geht soIch habe Dateien in einem Verzeichnis und wollte mit
dir | rename-item -newName helpling.zip ; sendmail ( xxx ); remove-item helpling.zip
Er läuft auch einmal durch, aber bei der nächsten Datei geht es nicht mehr.
Was mache ich hier falsch?
Ich dachte, mit dir kann eine die Dateien auslesen und dann werden die 3 Befehle abgearbeitet.
dir -File -Filter *.zip | %{
sendmail ...................... -Attachments $_
$_ | remove-item -Force
}
p.s. Bitte den Thread hier nicht übernehmen, wenn weitere Fragen sind bitte PN oder neuen Thread. Danke!