Είμαστε εξοικειωμένοι με το cmdlet Send-MailMessage κατά την αποστολή μηνυμάτων ηλεκτρονικού ταχυδρομείου μέσω του PowerShell. Δυστυχώς, το cmdlet Send-MailMessage είναι ξεπερασμένο και δεν συνιστάται πλέον για χρήση. Λοιπόν, ποια είναι η εναλλακτική λύση Send-MailMessage; Η απάντηση είναι Send-MailKitMessage. Σε αυτό το άρθρο, θα μάθετε πώς να στέλνετε email με το PowerShell.
Το cmdlet Send-MailMessage είναι ξεπερασμένο
ΟΑποστολή-ΑλληλογραφίαΤο cmdlet είναι δημοφιλές για την αποστολή μηνύματος email μέσω του PowerShell. Δυστυχώς, το cmdlet Send-MailMessage είναι ξεπερασμένο και δεν πρέπει να το χρησιμοποιείτε πλέον.
Σημείωμα:Το cmdlet Send-MailMessage είναι ξεπερασμένο. Αυτό το cmdlet δεν εγγυάται ασφαλείς συνδέσεις με διακομιστές SMTP. Αν και δεν υπάρχει διαθέσιμη άμεση αντικατάσταση στο PowerShell, σας συνιστούμε να μην χρησιμοποιείτε το Send-MailMessage.
Τώρα που δεν υπάρχει διαθέσιμη αντικατάσταση στα προεπιλεγμένα cmdlet του PowerShell, υπάρχει κάποια λειτουργική μονάδα που μπορούμε να εγκαταστήσουμε και να χρησιμοποιήσουμε για την αποστολή μηνυμάτων email από το PowerShell; Ναι, υπάρχει. ΟSend-MailKit MessageΗ ενότητα είναι μια εξαιρετική αντικατάσταση για το cmdlet Send-MailMessage.
Διαμόρφωση ρελέ SMTP
Διαβάστε τα παρακάτω άρθρα εάν θέλετε να ρυθμίσετε ένα ρελέ SMTP:
- Διαμόρφωση ανώνυμου ρελέ SMTP στον Exchange Server
- Διαμόρφωση ρελέ SMTP του Office 365
Εγκαταστήστε τη μονάδα Send-MailKitMessage
Για να εγκαταστήσετε τη λειτουργική μονάδα Send-MailKitMessage στο σύστημά σας, ακολουθήστε τα παρακάτω βήματα.
1. Ορίστε την πολιτική εκτέλεσης του Windows PowerShell
Από προεπιλογή, δεν μπορούμε να εγκαταστήσουμε σενάρια. Για να απαιτήσετε όλα τα σενάρια PowerShell που κατεβάζετε από το διαδίκτυο να είναι υπογεγραμμένα από έναν αξιόπιστο εκδότη, εκτελέστε το PowerShell ως διαχειριστή και εκτελέστε το cmdlet.
Set-ExecutionPolicy RemoteSignedΣπουδαίος:Κλείστε και ανοίξτε ξανά το ανυψωμένο παράθυρο του Windows PowerShell για να εφαρμοστούν οι αλλαγές.
2. Εγκαταστήστε τη μονάδα PowerShellGet
Εκτελέστε το PowerShell ως διαχειριστής. Εκτελέστε την εντολήInstall-Module PowershellGet -Force. Όταν σας ζητηθεί να εγκαταστήσετε τον παροχέα NuGet, πατήστεΥκαι ακολουθήστε μεΕισάγω.
Install-Module PowershellGet -ForceΕάν λάβετε ένα σφάλμα ότι δεν είναι δυνατή η εγκατάσταση, διαβάστε το άρθρο Δεν είναι δυνατή η εγκατάσταση του παρόχου NuGet για το PowerShell.
3. Εγκαταστήστε τη μονάδα Send-MailKitMessage
Εγκαταστήστε τοΕνότητα Send-MailKitMessage.
Install-Module -Name Send-MailKitMessage -ForceΤώρα που έχει εγκατασταθεί η λειτουργική μονάδα, ας δούμε μερικά παραδείγματα για τον τρόπο αποστολής μηνυμάτων ηλεκτρονικού ταχυδρομείου με το PowerShell.
Παράμετροι Send-MailKitMessage
Μπορείτε να χρησιμοποιήσετε τις παρακάτω παραμέτρους όταν χρησιμοποιείτε τη λειτουργική μονάδα Send-MailKitMessage.
# Use secure connection if available ([bool], optional)
$UseSecureConnectionIfAvailable = $true
# Authentication ([System.Management.Automation.PSCredential], optional)
$Credential = [System.Management.Automation.PSCredential]::new("Username", (Read-Host -Prompt "Enter password" -AsSecureString))
# SMTP server ([string], required)
$SMTPServer = "SMTPServer"
# Port ([int], required)
$Port = "PortNumber"
# Sender ([MimeKit.MailboxAddress] https://www.mimekit.net/docs/html/T_MimeKit_MailboxAddress.htm, required)
$From = [MimeKit.MailboxAddress]"SenderEmailAddress"
# Recipient list ([MimeKit.InternetAddressList] https://www.mimekit.net/docs/html/T_MimeKit_InternetAddressList.htm, required)
$RecipientList = [MimeKit.InternetAddressList]::new()
$RecipientList.Add([MimeKit.InternetAddress]"Recipient1EmailAddress")
# CC list ([MimeKit.InternetAddressList] https://www.mimekit.net/docs/html/T_MimeKit_InternetAddressList.htm, optional)
$CCList = [MimeKit.InternetAddressList]::new()
$CCList.Add([MimeKit.InternetAddress]"CCRecipient1EmailAddress")
# BCC list ([MimeKit.InternetAddressList] https://www.mimekit.net/docs/html/T_MimeKit_InternetAddressList.htm, optional)
$BCCList = [MimeKit.InternetAddressList]::new()
$BCCList.Add([MimeKit.InternetAddress]"BCCRecipient1EmailAddress")
# Subject ([string], optional)
$Subject = [string]"Subject"
# Text body ([string], optional)
$TextBody = [string]"TextBody"
# HTML body ([string], optional)
$HTMLBody = [string]"HTMLBody"
# Attachment list ([System.Collections.Generic.List[string]], optional)
$AttachmentList = [System.Collections.Generic.List[string]]::new()
$AttachmentList.Add("Attachment1FilePath")
# Splat parameters
$Parameters = @{
"UseSecureConnectionIfAvailable" = $UseSecureConnectionIfAvailable
"Credential" = $Credential
"SMTPServer" = $SMTPServer
"Port" = $Port
"From" = $From
"RecipientList" = $RecipientList
"CCList" = $CCList
"BCCList" = $BCCList
"Subject" = $Subject
"TextBody" = $TextBody
"HTMLBody" = $HTMLBody
"AttachmentList" = $AttachmentList
}
# Send message
Send-MailKitMessage @ParametersΑκολουθούν ορισμένα πρότυπα που μπορείτε να χρησιμοποιήσετε για να στείλετε email με το PowerShell.
Απαιτούνται οι ακόλουθες παράμετροι:
- Διακομιστής SMTPS
- Λιμάνι
- Από
- Λίστα Παραληπτών
Στείλτε email στον παραλήπτη
Αυτό το παράδειγμα στέλνει ένα μήνυμα ηλεκτρονικού ταχυδρομείου από έναν αποστολέα σε έναν παραλήπτη.
Δείτε επίσης:Στείλτε μηνύματα ηλεκτρονικού ταχυδρομείου με το Microsoft Graph API και το PowerShell
# SMTP server ([string], required)
$SMTPServer = "mail.exoip.com"
# Port ([int], required)
$Port = "25"
# Sender ([MimeKit.MailboxAddress] https://www.mimekit.net/docs/html/T_MimeKit_MailboxAddress.htm, required)
$From = [MimeKit.MailboxAddress]"[email protected]"
# Recipient list ([MimeKit.InternetAddressList] https://www.mimekit.net/docs/html/T_MimeKit_InternetAddressList.htm, required)
$RecipientList = [MimeKit.InternetAddressList]::new()
$RecipientList.Add([MimeKit.InternetAddress]"[email protected]")
# Subject ([string], optional)
$Subject = [string]"This is the subject"
# Text body ([string], optional)
$TextBody = [string]"This is the text body"
# Splat parameters
$Parameters = @{
"SMTPServer" = $SMTPServer
"Port" = $Port
"From" = $From
"RecipientList" = $RecipientList
"Subject" = $Subject
"TextBody" = $TextBody
}
# Send message
Send-MailKitMessage @ParametersΈτσι φαίνεται στα εισερχόμενα του παραλήπτη.

Στείλτε email με συνημμένο
Αυτό το παράδειγμα στέλνει ένα μήνυμα ηλεκτρονικού ταχυδρομείου με συνημμένο σε πολλούς παραλήπτες.
# SMTP server ([string], required)
$SMTPServer = "mail.exoip.com"
# Port ([int], required)
$Port = "25"
# Sender ([MimeKit.MailboxAddress] https://www.mimekit.net/docs/html/T_MimeKit_MailboxAddress.htm, required)
$From = [MimeKit.MailboxAddress]"[email protected]"
# Recipient list ([MimeKit.InternetAddressList] https://www.mimekit.net/docs/html/T_MimeKit_InternetAddressList.htm, required)
$RecipientList = [MimeKit.InternetAddressList]::new()
$RecipientList.Add([MimeKit.InternetAddress]"[email protected]")
$RecipientList.Add([MimeKit.InternetAddress]"[email protected]")
# Subject ([string], optional)
$Subject = [string]"Sending the Attachment"
# Text body ([string], optional)
$TextBody = [string]"See the CSV file attachment."
# Attachment list ([System.Collections.Generic.List[string]], optional)
$AttachmentList = [System.Collections.Generic.List[string]]::new()
$AttachmentList.Add("C:tempFile.csv")
# Splat parameters
$Parameters = @{
"SMTPServer" = $SMTPServer
"Port" = $Port
"From" = $From
"RecipientList" = $RecipientList
"Subject" = $Subject
"TextBody" = $TextBody
"AttachmentList" = $AttachmentList
}
# Send message
Send-MailKitMessage @ParametersΈτσι φαίνεται στα εισερχόμενα του παραλήπτη.

Στείλτε email στη λίστα αλληλογραφίας
Αυτό το παράδειγμα στέλνει ένα μήνυμα email σε μια λίστα αλληλογραφίας με επιπλέον παραλήπτες στα πεδία CC και BCC.
# SMTP server ([string], required)
$SMTPServer = "mail.exoip.com"
# Port ([int], required)
$Port = "25"
# Sender ([MimeKit.MailboxAddress] https://www.mimekit.net/docs/html/T_MimeKit_MailboxAddress.htm, required)
$From = [MimeKit.MailboxAddress]"[email protected]"
# Recipient list ([MimeKit.InternetAddressList] https://www.mimekit.net/docs/html/T_MimeKit_InternetAddressList.htm, required)
$RecipientList = [MimeKit.InternetAddressList]::new()
$RecipientList.Add([MimeKit.InternetAddress]"[email protected]")
# CC list ([MimeKit.InternetAddressList] https://www.mimekit.net/docs/html/T_MimeKit_InternetAddressList.htm, optional)
$CCList = [MimeKit.InternetAddressList]::new()
$CCList.Add([MimeKit.InternetAddress]"[email protected]")
# BCC list ([MimeKit.InternetAddressList] https://www.mimekit.net/docs/html/T_MimeKit_InternetAddressList.htm, optional)
$BCCList = [MimeKit.InternetAddressList]::new()
$BCCList.Add([MimeKit.InternetAddress]"[email protected]")
# Subject ([string], optional)
$Subject = [string]"To all the members"
# Text body ([string], optional)
$TextBody = [string]"Check out the magic."
# Splat parameters
$Parameters = @{
"SMTPServer" = $SMTPServer
"Port" = $Port
"From" = $From
"RecipientList" = $RecipientList
"CCList" = $CCList
"BCCList" = $BCCList
"Subject" = $Subject
"TextBody" = $TextBody
}
# Send message
Send-MailKitMessage @ParametersΈτσι φαίνεται στα εισερχόμενα του παραλήπτη.

Αποστολή email μέσω ασφαλούς σύνδεσης (TLS)
Το Transport Layer Security (TLS) είναι ένα πρωτόκολλο που κρυπτογραφεί τα μηνύματα ηλεκτρονικού ταχυδρομείου για ασφάλεια και απόρρητο.
Αυτό το παράδειγμα στέλνει ένα μήνυμα ηλεκτρονικού ταχυδρομείου από έναν αποστολέα που πρέπει να γίνει έλεγχος ταυτότητας σε έναν παραλήπτη μέσω ασφαλούς σύνδεσης (TLS).
# Use secure connection if available ([bool], optional)
$UseSecureConnectionIfAvailable = $true
# Authentication ([System.Management.Automation.PSCredential], optional)
$Credential = [System.Management.Automation.PSCredential]::new("[email protected]", (Read-Host -Prompt "Enter password" -AsSecureString))
# SMTP server ([string], required)
$SMTPServer = "mail.exoip.com"
# Port ([int], required)
$Port = "587"
# Sender ([MimeKit.MailboxAddress] https://www.mimekit.net/docs/html/T_MimeKit_MailboxAddress.htm, required)
$From = [MimeKit.MailboxAddress]"[email protected]"
# Recipient list ([MimeKit.InternetAddressList] https://www.mimekit.net/docs/html/T_MimeKit_InternetAddressList.htm, required)
$RecipientList = [MimeKit.InternetAddressList]::new()
$RecipientList.Add([MimeKit.InternetAddress]"[email protected]")
# Subject ([string], optional)
$Subject = [string]"Sending with Port 587"
# Text body ([string], optional)
$TextBody = [string]"Sending the message on Port 587 (TLS)"
# Splat parameters
$Parameters = @{
"UseSecureConnectionIfAvailable" = $UseSecureConnectionIfAvailable
"Credential" = $Credential
"SMTPServer" = $SMTPServer
"Port" = $Port
"From" = $From
"RecipientList" = $RecipientList
"Subject" = $Subject
"TextBody" = $TextBody
}
# Send message
Send-MailKitMessage @ParametersΑυτό είναι όλο!
Σύναψη
Μάθατε πώς να στέλνετε μηνύματα ηλεκτρονικού ταχυδρομείου με το PowerShell χρησιμοποιώντας τη λειτουργική μονάδα Send-MailKitMessage. Είναι μια εξαιρετική αντικατάσταση για το cmdlet Send-MailMessage, το οποίο δεν χρησιμοποιείται πλέον. Εγκαταστήστε τη λειτουργική μονάδα και προσαρμόστε τα σενάρια σας ή χρησιμοποιήστε την για να ελέγξετε τη ροή εξερχόμενης αλληλογραφίας SMTP.
Σας άρεσε αυτό το άρθρο; Μπορεί επίσης να σας αρέσει Τρόπος ρύθμισης παραμέτρων του Microsoft 365 ώστε να δέχεται αλληλογραφία μόνο από φίλτρο ανεπιθύμητης αλληλογραφίας τρίτων. Μην ξεχάσετε να μας ακολουθήσετε και να μοιραστείτε αυτό το άρθρο.











![[Διόρθωση] Η επιλογή "Εμφάνιση εφαρμογών που χρησιμοποιούνται περισσότερο" είναι γκριζαρισμένη στις Ρυθμίσεις έναρξης των Windows 10](https://media.askvg.com/articles/images6/Windows_10_RUN_MRU_List_Empty.png)

