Send-MailMessage

傳送電子郵件訊息。

語法

All

Send-MailMessage
    [[-Body] <String>]
    [[-SmtpServer] <String>]
    [[-Subject] <String>]
    [-To] <String[]>
    -From <String>
    [-Attachments <String[]>]
    [-Bcc <String[]>]
    [-BodyAsHtml]
    [-Encoding <Encoding>]
    [-Cc <String[]>]
    [-DeliveryNotificationOption <DeliveryNotificationOptions>]
    [-Priority <MailPriority>]
    [-ReplyTo <String[]>]
    [-Credential <PSCredential>]
    [-UseSsl]
    [-Port <Int32>]
    [<CommonParameters>]

Description

Send-MailMessage指令長從 PowerShell 內部發送電子郵件。

您必須指定簡易郵件傳輸協定(SMTP)伺服器,否則指令 Send-MailMessage 將失敗。 使用 SmtpServer 參數或將變數設 $PSEmailServer 為有效的 SMTP 伺服器。 指派給 的 $PSEmailServer 值是 PowerShell 預設的 SMTP 設定。 如需詳細資訊,請參閱 about_Preference_Variables。

Warning

Send-MailMessage Cmdlet 已過時。 此 Cmdlet 不保證與 SMTP 伺服器的安全連線。 雖然 PowerShell 沒有立即可用的替代方案,但我們建議你不要使用 Send-MailMessage。 欲了解更多資訊,請參閱 平台相容性說明 DE0005。

範例

範例 1:從一個人寄信給另一個人

這個例子是從一個人發送電子郵件給另一個人。

From、To 和 Subject 參數皆由 Send-MailMessage要求。 此範例使用了 SMTP 伺服器的預設 $PSEmailServer 變數,因此不需要 SmtpServer 參數。

$sendMailMessageSplat = @{
    From = 'User01 <user01@fabrikam.com>'
    To = 'User02 <user02@fabrikam.com>'
    Subject = 'Test mail'
}
Send-MailMessage @sendMailMessageSplat

Send-MailMessage指令小程式使用 From 參數來指定訊息的發送者。 To 參數指定訊息的接收者。 主旨參數使用文字串 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

Send-MailMessage指令小程式使用 From 參數來指定訊息的發送者。 To 參數指定訊息的接收者。 主旨參數描述訊息的內容。 Body 參數是訊息的內容。

附件參數指定目前目錄中附在電子郵件訊息中的檔案。 Priority 參數將訊息設定為High優先權。 DeliveryNotificationOption 參數指定兩個值,與 OnSuccessOnFailure。 發送者將收到電子郵件通知,以確認訊息傳遞的成功或失敗。 SmtpServer 參數將 SMTP 伺服器設定為 smtp.fabrikam.com。

範例三:寄信到郵件列表

這個例子是向郵件列表發送一封電子郵件。

$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

Send-MailMessage指令小程式使用 From 參數來指定訊息的發送者。 To 參數指定訊息的接收者。 Cc 參數會將訊息副本傳送給指定的收件人。 Bcc 參數會傳送訊息的盲副本。 盲抄本是指對其他收件人隱藏的電子郵件地址。 主 旨 參數是訊息,因為可選的 主體 參數沒有包含。

憑證參數指定網域管理員的憑證用於發送訊息。 UseSsl 參數指定安全套接層(SSL)建立安全連線。

參數

-Attachments

指定要附加到電子郵件訊息的檔案路徑與檔名。 你可以使用這個參數,或將路徑和檔案名稱匯入 Send-MailMessage。

參數屬性

類型:

String[]

預設值:None
支援萬用字元:False
不要顯示:False
別名:PsPath

參數集

(All)
Position:Named
必要:False
來自管線的值:True
來自管線按屬性名稱的值:True
來自剩餘引數的值:False

-Bcc

指定接收郵件副本但未列為收件人的電子郵件地址。 輸入姓名(可選)及電子郵件地址,例如 Name <someone@fabrikam.com>。

參數屬性

類型:

String[]

預設值:None
支援萬用字元:False
不要顯示:False

參數集

(All)
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:True
來自剩餘引數的值:False

-Body

指定電子郵件內容。

參數屬性

類型:String
預設值:None
支援萬用字元:False
不要顯示:False

參數集

(All)
Position:2
必要:False
來自管線的值:False
來自管線按屬性名稱的值:True
來自剩餘引數的值:False

-BodyAsHtml

指定 Body 參數的值包含 HTML。

參數屬性

類型:SwitchParameter
預設值:None
支援萬用字元:False
不要顯示:False
別名:BAH

參數集

(All)
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:True
來自剩餘引數的值:False

-Cc

指定電子郵件副本(CC)寄送至的電子郵件地址。 輸入姓名(可選)及電子郵件地址,例如 Name <someone@fabrikam.com>。

參數屬性

類型:

String[]

預設值:None
支援萬用字元:False
不要顯示:False

參數集

(All)
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:True
來自剩餘引數的值:False

-Credential

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

輸入使用者名稱,例如 User01 或 Domain01\User01。 或者,輸入 一個 PSCredential 物件,例如來自 Get-Credential cmdlet 的物件。

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

Note

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

參數屬性

類型:PSCredential
預設值:Current user
支援萬用字元:False
不要顯示:False

參數集

(All)
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:True
來自剩餘引數的值:False

-DeliveryNotificationOption

指定電子郵件的送達通知選項。 你可以指定多個數值。 預設值為「無」。 此參數的別名為 DNO。

配送通知會發送到「 From 」參數中的地址。

此參數可接受的值如下:

  • None:沒有通知。
  • OnSuccess:如果交付成功,請通知。
  • OnFailure:若交付失敗,請通知。
  • Delay:如果送貨延誤,請通知。
  • Never:絕不通知。

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

參數屬性

類型:DeliveryNotificationOptions
預設值:None
接受的值:None, OnSuccess, OnFailure, Delay, Never
支援萬用字元:False
不要顯示:False
別名:DNO

參數集

(All)
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:True
來自剩餘引數的值:False

-Encoding

指定目標檔案的編碼類型。 預設值為 utf8NoBOM。

此參數可接受的值如下:

  • ascii:使用 ASCII (7 位) 字元集的編碼方式。
  • ansi:使用符合當前文化特性的 ANSI 代碼頁的編碼方式。 此選項已在PowerShell 7.4中新增。
  • bigendianunicode:使用高位元組序以 UTF-16 格式編碼。
  • bigendianutf32:使用大端字節順序以 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 1251)或已註冊代碼頁的字串名稱(例如 -Encoding "windows-1251")。 如需詳細資訊,請參閱 Encoding.CodePage的 .NET 檔。

從 PowerShell 7.4 開始,您可以使用 Ansi 參數的 值,傳遞目前文化的 ANSI 代碼頁的數值 ID,而不需要手動指定。

Note

UTF-7* 不再建議使用。 自 PowerShell 7.1 起,如果您為 utf7 參數指定 ,則會撰寫警告。

參數屬性

類型:Encoding
預設值:ASCII
接受的值:ASCII, BigEndianUnicode, BigEndianUTF32, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32
支援萬用字元:False
不要顯示:False
別名:BE

參數集

(All)
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:True
來自剩餘引數的值:False

-From

From 參數是 必須的。 此參數指定寄件者的電子郵件地址。 輸入姓名(可選)及電子郵件地址,例如 Name <someone@fabrikam.com>。

參數屬性

類型:String
預設值:None
支援萬用字元:False
不要顯示:False

參數集

(All)
Position:Named
必要:True
來自管線的值:False
來自管線按屬性名稱的值:True
來自剩餘引數的值:False

-Port

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

參數屬性

類型:Int32
預設值:25
支援萬用字元:False
不要顯示:False

參數集

(All)
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:True
來自剩餘引數的值:False

-Priority

指定電子郵件的優先順序。 預設是普通。 此參數的可接受值為正常、高與低。

參數屬性

類型:MailPriority
預設值:Normal
接受的值:Normal, High, Low
支援萬用字元:False
不要顯示:False

參數集

(All)
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:True
來自剩餘引數的值:False

-ReplyTo

指定其他電子郵件地址(非寄件人地址)以回覆此訊息。 輸入姓名(可選)及電子郵件地址,例如 Name <someone@fabrikam.com>。

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

參數屬性

類型:

String[]

預設值:None
支援萬用字元:False
不要顯示:False

參數集

(All)
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:True
來自剩餘引數的值:False

-SmtpServer

指定發送電子郵件的 SMTP 伺服器名稱。

預設值是偏好變數的 $PSEmailServer 值。 如果偏好變數未設定且該參數未被使用, Send-MailMessage 指令就會失敗。

參數屬性

類型:String
預設值:$PSEmailServer
支援萬用字元:False
不要顯示:False
別名:電腦名稱

參數集

(All)
Position:3
必要:False
來自管線的值:False
來自管線按屬性名稱的值:True
來自剩餘引數的值:False

-Subject

主 體 參數不是必須的。 此參數指定電子郵件的主旨。

參數屬性

類型:String
預設值:None
支援萬用字元:False
不要顯示:False
別名:分支

參數集

(All)
Position:1
必要:False
來自管線的值:False
來自管線按屬性名稱的值:True
來自剩餘引數的值:False

-To

To 參數是 必須的。 此參數指定收件人的電子郵件地址。 輸入姓名(可選)及電子郵件地址,例如 Name <someone@fabrikam.com>。

參數屬性

類型:

String[]

預設值:None
支援萬用字元:False
不要顯示:False

參數集

(All)
Position:0
必要:True
來自管線的值:False
來自管線按屬性名稱的值:True
來自剩餘引數的值:False

-UseSsl

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

參數屬性

類型:SwitchParameter
預設值:None
支援萬用字元:False
不要顯示:False

參數集

(All)
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:True
來自剩餘引數的值:False

CommonParameters

此 cmdlet 支援常見參數:-Debug、-ErrorAction、-ErrorVariable、-InformationAction、-InformationVariable、-OutBuffer、-OutVariable、-PipelineVariable、-ProgressAction、-Verbose、-WarningAction 和 -WarningVariable。 如需詳細資訊,請參閱 about_CommonParameters。

輸入

String

你可以將這個 cmdlet 的附件路徑和檔名管道傳輸。

輸出

None

此 Cmdlet 不會傳回任何輸出。

備註

Send-MailMessage Cmdlet 已過時。 欲了解更多資訊,請參閱 平台相容性說明 DE0005。 此 Cmdlet 不保證與 SMTP 伺服器的安全連線。

DE0005 建議使用第三方函式庫 MailKit。 如果你正在使用 Exchange Online,可以使用Microsoft Graph PowerShell SDK 中的 Send-MgUserMail。