使用 PowerShell 傳送電子郵件

Marion Paul Kenneth Mendoza 2022年5月16日
使用 PowerShell 傳送電子郵件

Windows PowerShell 是一個命令列 shell,用於解決 Windows 中的一些管理任務以及在此作業系統上執行的應用程式。通用指令碼語言允許你定製 cmdlet 以執行特定功能。

傳送電子郵件就是其中之一。本文將討論使用 Windows PowerShell 傳送電子郵件和處理此方法的其他方式。

在 PowerShell 中使用 Send-MailMessage Cmdlet 傳送電子郵件

這是一個基於 Send-MailMessage cmdlet 的示例,你現在可以使用 SMTP 協議從 PowerShell 傳送電子郵件。

Send-MailMessage -To "user@contoso.com" -From "user@abccompany.net"  -Subject "Hello!" -Body "This is important" -Credential (Get-Credential) -SmtpServer "smtp.gmail.com" -Port 587

我們只需要插入發件人和收件人的電子郵件地址,並指定我們要使用的 SMTP 伺服器。

Send-MailMessage cmdlet 還允許你使用命令的許多引數在電子郵件中新增更多詳細資訊。這是我們可以使用 cmdlet 使用的引數列表。

引數 引數描述
-To 目標收件人的電子郵件地址。
-Bcc 將被 Blind Carbon 複製的電子郵件地址。
-Cc 將被碳複製的電子郵件地址。
-From 發件人或源電子郵件地址。
-Subject 電子郵件的主題。
-Body 電子郵件的正文。
-BodyAsHTML 表示電子郵件的正文具有 HTML 標記。
-Attachments 要附加到名稱的檔名。
-Credential 用於傳送電子郵件的憑據。
-SMTPServer SMTP 伺服器的名稱。
-Port SMTP 伺服器埠。
-UseSSL 傳送電子郵件時將使用安全套接字層 (SSL) 協議。

你可以先將引數值分配給變數,然後再將它們插入命令列以便於閱讀。

$From = "user@abccompany.net"
$To = "user@contoso.com"
$Copy = "manager@contoso.com"
$Attachment = "C:\Temp\file.jpg"
$Subject = "Photos of Drogon"
$Body = "<br>Please see attached picture for reference."
$SMTPServer = "smtp.gmail.com"
$SMTPPort = "465"

Send-MailMessage -From $From -to $To -Cc $Copy -Subject $Subject -Body $Body -SmtpServer $SMTPServer -Port $SMTPPort -UseSsl -Credential (Get-Credential) -Attachments $Attachment

預設情況下,Send-MailMessage 命令嘗試通過標準 SMTP 埠 TCP 25 傳送電子郵件。

但是,假設你的 SMTP 伺服器只允許使用加密協議傳送電子郵件。在這種情況下,我們可以最頻繁地指定埠號;它是 465 或 587 和 -UseSSL 開關引數。

下表顯示了流行的公共電子郵件提供商的 SMTP 伺服器引數列表,我們可以使用這些引數從 Windows PowerShell 傳送訊息(請注意,我們必須允許在帳戶介面中通過 SMTP 傳送電子郵件):

服務 SMTP 伺服器 連線
Gmail smtp.gmail.com 587 TLS
25 TLS
465 SSL
Office 365 smtp.office365.com 587 TLS
25 TLS
Outlook.com smtp-mail.outlook.com 587 TLS
25 TLS
雅虎郵箱 smtp.mail.yahoo.com 587 TLS
25 TLS
465 SSL
Windows Live Hotmail smtp.live.com 587 TLS
25 TLS
Zoho smtp.zoho.com 587 TLS
465 SSL
Marion Paul Kenneth Mendoza avatar Marion Paul Kenneth Mendoza avatar

Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.

LinkedIn