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-MailMessageFromToSubject 參數。 此範例會使用 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 參數會指定兩個值和 OnSuccessOnFailure 寄件者會收到電子郵件通知,以確認郵件傳遞成功或失敗。 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

Type:String[]
Aliases:PsPath
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-Bcc

指定接收郵件復本但未列為郵件收件者的電子郵件位址。 輸入名稱(選擇性)和電子郵件位址,例如 Name <someone@fabrikam.com>

Type:String[]
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-Body

指定電子郵件訊息的內容。

Type:String
Position:2
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-BodyAsHtml

指定 Body 參數的值包含 HTML。

Type:SwitchParameter
Aliases:BAH
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-Cc

指定傳送電子郵件訊息之副本 (CC) 的電子郵件位址。 輸入名稱(選擇性)和電子郵件位址,例如 Name <someone@fabrikam.com>

Type:String[]
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-Credential

指定具有執行此動作許可權的用戶帳戶。 預設為目前使用者。

輸入用戶名稱,例如User01或Domain01\User01。 或者,輸入 PSCredential 物件,例如 Cmdlet 中的 Get-Credential 一個。

認證會儲存在 PSCredential 物件中,密碼會儲存為 SecureString

注意

如需 SecureString 數據保護的詳細資訊,請參閱 SecureString 有多安全?

Type:PSCredential
Position:Named
Default value:Current user
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-DeliveryNotificationOption

指定電子郵件訊息的傳遞通知選項。 您可以指定多個 值。 預設值為 None。 此參數的別名為 DNO

傳遞通知會傳送至From參數中的位址。

此參數可接受的值如下:

  • None:沒有通知。
  • OnSuccess:如果傳遞成功,請通知。
  • OnFailure:如果傳遞不成功,請通知。
  • Delay:通知傳遞是否延遲。
  • Never:永不通知。

這些值會定義為旗標型列舉。 您可以將多個值結合在一起,以使用此參數來設定多個旗標。 這些值可以傳遞至 DeliveryNotification 參數做為值的陣列,或是這些值的逗號分隔字串。 Cmdlet 會使用二進位 OR 作業來合併值。 將值當做數位傳遞是最簡單的選項,也可讓您在值上使用 Tab 鍵自動完成。

Type:DeliveryNotificationOptions
Aliases:DNO
Accepted values:None, OnSuccess, OnFailure, Delay, Never
Position:Named
Default value:None
Required: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,則會撰寫警告。

Type:Encoding
Aliases:BE
Accepted values:ASCII, BigEndianUnicode, BigEndianUTF32, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32
Position:Named
Default value:ASCII
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-From

需要 From 參數。 此參數會指定寄件者的電子郵件位址。 輸入名稱(選擇性)和電子郵件位址,例如 Name <someone@fabrikam.com>

Type:String
Position:Named
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-Port

指定 SMTP 伺服器上的替代埠。 默認值為 25,這是預設 SMTP 連接埠。

Type:Int32
Position:Named
Default value:25
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-Priority

指定電子郵件訊息的優先順序。 一般是預設值。 此參數可接受的值為 Normal、High 和 Low。

Type:MailPriority
Accepted values:Normal, High, Low
Position:Named
Default value:Normal
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-ReplyTo

指定用來回覆此信件的其他電子郵件地址(非[來源位址] 。 輸入名稱(選擇性)和電子郵件位址,例如 Name <someone@fabrikam.com>

此參數是在 PowerShell 6.2 中引進的。

Type:String[]
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-SmtpServer

指定傳送電子郵件訊息的 SMTP 伺服器名稱。

預設值是喜好設定變數的值 $PSEmailServer 。 如果未設定喜好設定變數,而且未使用此參數,則 Send-MailMessage 命令會失敗。

Type:String
Aliases:ComputerName
Position:3
Default value:$PSEmailServer
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-Subject

不需要 Subject 參數。 此參數會指定電子郵件訊息的主旨。

Type:String
Aliases:sub
Position:1
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-To

需要 To 參數。 此參數會指定收件者的電子郵件位址。 輸入名稱(選擇性)和電子郵件位址,例如 Name <someone@fabrikam.com>

Type:String[]
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-UseSsl

安全套接字層 (SSL) 通訊協定可用來建立與遠端電腦的安全連線,以傳送郵件。 根據預設,不會使用 SSL。

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

輸入

String

您可以使用管線將附件的路徑和檔名傳送至此 Cmdlet。

輸出

None

此 Cmdlet 不會傳回任何輸出。

備註

Send-MailMessage Cmdlet 已過時。 如需詳細資訊,請參閱 平臺相容性附註 DE0005。 此 Cmdlet 不保證與 SMTP 伺服器的安全連線。

DE0005 建議使用第三方連結庫 MailKit。 如果您使用 Exchange Online,您可以從 Microsoft Graph PowerShell SDK 使用 Send-MgUserMail