Send-MailMessage
傳送電子郵件訊息。
Syntax
Send-MailMessage
[-Attachments <String[]>]
[-Bcc <String[]>]
[[-Body] <String>]
[-BodyAsHtml]
[-Encoding <Encoding>]
[-Cc <String[]>]
[-DeliveryNotificationOption <DeliveryNotificationOptions>]
-From <String>
[[-SmtpServer] <String>]
[-Priority <MailPriority>]
[-ReplyTo <String[]>]
[[-Subject] <String>]
[-To] <String[]>
[-Credential <PSCredential>]
[-UseSsl]
[-Port <Int32>]
[<CommonParameters>]
Description
Cmdlet Send-MailMessage
會從PowerShell內傳送電子郵件訊息。
您必須指定 Simple Mail Transfer Protocol (SMTP) 伺服器或 Send-MailMessage
命令失敗。 使用 SmtpServer 參數,或將$PSEmailServer
變數設定為有效的 SMTP 伺服器。
指派給 $PSEmailServer
的值是PowerShell的預設SMTP設定。 如需詳細資訊,請參閱 about_Preference_Variables。
警告
Send-MailMessage
Cmdlet 已過時。 此 Cmdlet 不保證與 SMTP 伺服器的安全連線。 雖然 PowerShell 中沒有立即可用的取代專案,但建議您不要使用 Send-MailMessage
。 如需詳細資訊,請參閱 平臺相容性附註 DE0005。
範例
範例 1:將電子郵件從一個人傳送到另一個人
本範例會將電子郵件訊息從一個人傳送到另一個人。
需要 Send-MailMessage
From、To 和 Subject 參數。 此範例會使用 SMTP 伺服器的預設 $PSEmailServer
變數,因此 不需要 SmtpServer 參數。
$sendMailMessageSplat = @{
From = 'User01 <user01@fabrikam.com>'
To = 'User02 <user02@fabrikam.com>'
Subject = 'Test mail'
}
Send-MailMessage @sendMailMessageSplat
Cmdlet Send-MailMessage
會使用 From 參數來指定訊息的寄件者。 To 參數會指定郵件的收件者。 Subject 參數會使用文字字串 Test mail 做為訊息,因為不包含選擇性的 Body 參數。
範例 2:傳送附件
本範例會傳送含有附件的電子郵件訊息。
$sendMailMessageSplat = @{
From = 'User01 <user01@fabrikam.com>'
To = 'User02 <user02@fabrikam.com>', 'User03 <user03@fabrikam.com>'
Subject = 'Sending the Attachment'
Body = "Forgot to send the attachment. Sending now."
Attachments = '.\data.csv'
Priority = 'High'
DeliveryNotificationOption = 'OnSuccess', 'OnFailure'
SmtpServer = 'smtp.fabrikam.com'
}
Send-MailMessage @sendMailMessageSplat
Cmdlet Send-MailMessage
會使用 From 參數來指定訊息的寄件者。 To 參數會指定郵件的收件者。 Subject 參數描述訊息的內容。 Body 參數是訊息的內容。
Attachments 參數會指定目前目錄中附加至電子郵件訊息的檔案。 Priority 參數會將訊息設定為High
優先順序。 DeliveryNotificationOption 參數會指定兩個值和 OnSuccess
OnFailure
。 寄件者會收到電子郵件通知,以確認郵件傳遞成功或失敗。
SmtpServer 參數會將 SMTP 伺服器設定為 smtp.fabrikam.com
。
範例 3:將電子郵件傳送至郵件清單
本範例會將電子郵件訊息傳送至郵件清單。
$sendMailMessageSplat = @{
From = 'User01 <user01@fabrikam.com>'
To = 'ITGroup <itdept@fabrikam.com>'
Cc = 'User02 <user02@fabrikam.com>'
Bcc = 'ITMgr <itmgr@fabrikam.com>'
Subject = "Don't forget today's meeting!"
Credential = 'domain01\admin01'
UseSsl = $true
}
Send-MailMessage @sendMailMessageSplat
Cmdlet Send-MailMessage
會使用 From 參數來指定訊息的寄件者。 To 參數會指定郵件的收件者。 Cc 參數會將郵件的復本傳送給指定的收件者。 Bcc 參數會傳送訊息的盲目複本。 盲目的復本是隱藏自其他收件者的電子郵件位址。 Subject 參數是訊息,因為不包含選擇性的 Body 參數。
Credential 參數會指定網域系統管理員的認證用來傳送訊息。 UseSsl 參數會指定安全套接字層 (SSL) 會建立安全連線。
參數
-Attachments
指定要附加至電子郵件訊息之檔案的路徑和檔名。 您可以使用此參數,或使用管線將路徑和檔案名傳送至 Send-MailMessage
。
類型: | String[] |
Aliases: | PsPath |
Position: | Named |
預設值: | None |
必要: | False |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-Bcc
指定接收郵件復本但未列為郵件收件者的電子郵件位址。 輸入名稱(選擇性)和電子郵件位址,例如 Name <someone@fabrikam.com>
。
類型: | String[] |
Position: | Named |
預設值: | None |
必要: | False |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-Body
指定電子郵件訊息的內容。
類型: | String |
Position: | 2 |
預設值: | None |
必要: | False |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-BodyAsHtml
指定 Body 參數的值包含 HTML。
類型: | SwitchParameter |
Aliases: | BAH |
Position: | Named |
預設值: | None |
必要: | False |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-Cc
指定傳送電子郵件訊息之副本 (CC) 的電子郵件位址。 輸入名稱(選擇性)和電子郵件位址,例如 Name <someone@fabrikam.com>
。
類型: | String[] |
Position: | Named |
預設值: | None |
必要: | False |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-Credential
指定具有執行此動作許可權的用戶帳戶。 預設為目前使用者。
輸入用戶名稱,例如User01或Domain01\User01。 或者,輸入 PSCredential 物件,例如 Cmdlet 中的 Get-Credential
一個。
認證會儲存在 PSCredential 物件中,密碼會儲存為 SecureString。
注意
如需 SecureString 數據保護的詳細資訊,請參閱 SecureString 有多安全?。
類型: | PSCredential |
Position: | Named |
預設值: | Current user |
必要: | False |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-DeliveryNotificationOption
指定電子郵件訊息的傳遞通知選項。 您可以指定多個 值。 預設值為 None。 此參數的別名為 DNO。
傳遞通知會傳送至From參數中的位址。
此參數可接受的值如下:
None
:沒有通知。OnSuccess
:如果傳遞成功,請通知。OnFailure
:如果傳遞不成功,請通知。Delay
:通知傳遞是否延遲。Never
:永不通知。
這些值會定義為旗標型列舉。 您可以將多個值結合在一起,以使用此參數來設定多個旗標。 這些值可以傳遞至 DeliveryNotification 參數做為值的陣列,或是這些值的逗號分隔字串。 Cmdlet 會使用二進位 OR 作業來合併值。 將值當做數位傳遞是最簡單的選項,也可讓您在值上使用 Tab 鍵自動完成。
類型: | DeliveryNotificationOptions |
Aliases: | DNO |
接受的值: | None, OnSuccess, OnFailure, Delay, Never |
Position: | Named |
預設值: | None |
必要: | False |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-Encoding
指定目標檔案的編碼類型。 預設值是 utf8NoBOM
。
此參數可接受的值如下:
ascii
:使用 ASCII (7 位) 字元集的編碼方式。ansi
:針對目前文化特性的 ANSI 代碼頁,使用 的編碼方式。 此選項已在PowerShell 7.4中新增。bigendianunicode
:使用 big-endian 位元組順序以 UTF-16 格式編碼。bigendianutf32
:使用 big-endian 位元組順序以 UTF-32 格式編碼。oem
:使用 MS-DOS 和控制台程式的預設編碼方式。unicode
:使用位元組順序以UTF-16格式編碼。utf7
:以 UTF-7 格式編碼。utf8
:以 UTF-8 格式編碼。utf8BOM
:使用位元節順序標記以 UTF-8 格式編碼 (BOM)utf8NoBOM
:以 UTF-8 格式編碼,不含位元組順序標記 (BOM)utf32
:以 UTF-32 格式編碼。
從 PowerShell 6.2 開始,Encoding 參數也允許已註冊代碼頁的數值識別元(例如 -Encoding 1251
)或已註冊代碼頁的字串名稱(例如 )。-Encoding "windows-1251"
如需詳細資訊,請參閱 Encoding.CodePage 的 .NET 檔。
從 PowerShell 7.4 開始,您可以使用 Ansi
Encoding 參數的值,傳遞目前文化特性 ANSI 代碼頁的數值標識碼,而不需要手動指定它。
注意
不再建議使用UTF-7* 。 自 PowerShell 7.1 起,如果您為 Encoding 參數指定utf7
,則會撰寫警告。
類型: | Encoding |
Aliases: | BE |
接受的值: | ASCII, BigEndianUnicode, BigEndianUTF32, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32 |
Position: | Named |
預設值: | ASCII |
必要: | False |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-From
需要 From 參數。 此參數會指定寄件者的電子郵件位址。 輸入名稱(選擇性)和電子郵件位址,例如 Name <someone@fabrikam.com>
。
類型: | String |
Position: | Named |
預設值: | None |
必要: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-Port
指定 SMTP 伺服器上的替代埠。 默認值為 25,這是預設 SMTP 連接埠。
類型: | Int32 |
Position: | Named |
預設值: | 25 |
必要: | False |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-Priority
指定電子郵件訊息的優先順序。 一般是預設值。 此參數可接受的值為 Normal、High 和 Low。
類型: | MailPriority |
接受的值: | Normal, High, Low |
Position: | Named |
預設值: | Normal |
必要: | False |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-ReplyTo
指定用來回覆此信件的其他電子郵件地址(非[來源位址] 。
輸入名稱(選擇性)和電子郵件位址,例如 Name <someone@fabrikam.com>
。
此參數是在 PowerShell 6.2 中引進的。
類型: | String[] |
Position: | Named |
預設值: | None |
必要: | False |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-SmtpServer
指定傳送電子郵件訊息的 SMTP 伺服器名稱。
預設值是喜好設定變數的值 $PSEmailServer
。 如果未設定喜好設定變數,而且未使用此參數,則 Send-MailMessage
命令會失敗。
類型: | String |
Aliases: | ComputerName |
Position: | 3 |
預設值: | $PSEmailServer |
必要: | False |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-Subject
不需要 Subject 參數。 此參數會指定電子郵件訊息的主旨。
類型: | String |
Aliases: | sub |
Position: | 1 |
預設值: | None |
必要: | False |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-To
需要 To 參數。 此參數會指定收件者的電子郵件位址。 輸入名稱(選擇性)和電子郵件位址,例如 Name <someone@fabrikam.com>
。
類型: | String[] |
Position: | 0 |
預設值: | None |
必要: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-UseSsl
安全套接字層 (SSL) 通訊協定可用來建立與遠端電腦的安全連線,以傳送郵件。 根據預設,不會使用 SSL。
類型: | SwitchParameter |
Position: | Named |
預設值: | None |
必要: | False |
Accept pipeline input: | True |
Accept wildcard characters: | False |
輸入
您可以使用管線將附件的路徑和檔名傳送至此 Cmdlet。
輸出
None
此 Cmdlet 不會傳回任何輸出。
備註
Send-MailMessage
Cmdlet 已過時。 如需詳細資訊,請參閱 平臺相容性附註 DE0005。 此 Cmdlet 不保證與 SMTP 伺服器的安全連線。
DE0005 建議使用第三方連結庫 MailKit。 如果您使用 Exchange Online,您可以從 Microsoft Graph PowerShell SDK 使用 Send-MgUserMail 。