Πώς να στείλετε email με το PowerShell

Είμαστε εξοικειωμένοι με το 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 ώστε να δέχεται αλληλογραφία μόνο από φίλτρο ανεπιθύμητης αλληλογραφίας τρίτων. Μην ξεχάσετε να μας ακολουθήσετε και να μοιραστείτε αυτό το άρθρο.

Related Posts