Поделиться через


Send-MailMessage

Отправляет сообщение электронной почты.

Синтаксис

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>]

Описание

Командлет Send-MailMessage отправляет сообщение электронной почты из PowerShell.

Необходимо указать сервер протокола SMTP или сбой команды Send-MailMessage. Используйте параметр smtpServer или задайте для переменной $PSEmailServer допустимый SMTP-сервер. Значение, назначенное $PSEmailServer, является параметром SMTP по умолчанию для PowerShell. Дополнительные сведения см. в about_Preference_Variables.

Предупреждение

Командлет Send-MailMessage устарел. Этот командлет не гарантирует безопасные подключения к SMTP-серверам. Хотя в PowerShell нет немедленной замены, рекомендуется не использовать Send-MailMessage. Дополнительные сведения см. в заметке о совместимости платформы DE0005.

Примеры

Пример 1. Отправка сообщения электронной почты от одного человека другому пользователю

В этом примере отправляется сообщение электронной почты от одного человека другому пользователю.

Параметры from, Toи Subject требуются Send-MailMessage. В этом примере используется переменная $PSEmailServer по умолчанию для SMTP-сервера, поэтому параметр smtpServer не нужен.

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

Командлет Send-MailMessage использует параметр From для указания отправителя сообщения. Параметр To указывает получателя сообщения. Параметр темы использует текстовую строку тестовой почты в качестве сообщения, так как необязательный параметр текста не включен.

Пример 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 указывает получателей сообщения. Параметр Subject описывает содержимое сообщения. Параметр body — это содержимое сообщения.

Параметр вложения указывает файл в текущем каталоге, вложенном в сообщение электронной почты. Параметр 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

Командлет Send-MailMessage использует параметр From для указания отправителя сообщения. Параметр To указывает получателей сообщения. Параметр Cc отправляет копию сообщения указанному получателю. Параметр Bcc отправляет слепую копию сообщения. Слепая копия — это адрес электронной почты, скрытый от других получателей. Параметр subject является сообщением, так как необязательный параметр текст не включен.

Параметр учетных данных указывает учетные данные администратора домена для отправки сообщения. Параметр UseSsl указывает, что протокол SSL создает безопасное подключение.

Параметры

-Attachments

Указывает путь и имена файлов, которые должны быть присоединены к сообщению электронной почты. Этот параметр можно использовать или передать пути и имена файлов для Send-MailMessage.

Тип:String[]
Aliases:PsPath
Position:Named
Default value:None
Обязательно:False
Принять входные данные конвейера:True
Принять подстановочные знаки:False

-Bcc

Указывает адреса электронной почты, которые получают копию почты, но не указаны в качестве получателей сообщения. Введите имена (необязательно) и адрес электронной почты, например Name <someone@fabrikam.com>.

Тип:String[]
Position:Named
Default value:None
Обязательно:False
Принять входные данные конвейера:True
Принять подстановочные знаки:False

-Body

Указывает содержимое сообщения электронной почты.

Тип:String
Position:2
Default value:None
Обязательно:False
Принять входные данные конвейера:True
Принять подстановочные знаки:False

-BodyAsHtml

Указывает, что значение параметра body содержит HTML.

Тип:SwitchParameter
Aliases:BAH
Position:Named
Default value:None
Обязательно:False
Принять входные данные конвейера:True
Принять подстановочные знаки:False

-Cc

Указывает адреса электронной почты, на которые отправляется копия углерода (CC) сообщения электронной почты. Введите имена (необязательно) и адрес электронной почты, например Name <someone@fabrikam.com>.

Тип:String[]
Position:Named
Default value:None
Обязательно:False
Принять входные данные конвейера:True
Принять подстановочные знаки:False

-Credential

Указывает учетную запись пользователя, которая имеет разрешение на выполнение этого действия. По умолчанию используется текущий пользователь.

Введите имя пользователя, например User01 или Domain01\User01. Или введите объект PSCredential, например один из командлета Get-Credential.

Учетные данные хранятся в объекте PSCredential, а пароль хранится в виде SecureString.

Заметка

Дополнительные сведения о защите данных SecureString см. в разделе Как безопасно SecureString?.

Тип:PSCredential
Position:Named
Default value:Current user
Обязательно:False
Принять входные данные конвейера:True
Принять подстановочные знаки:False

-DeliveryNotificationOption

Задает параметры уведомления о доставке сообщения электронной почты. Можно указать несколько значений. Значение по умолчанию отсутствует. Псевдоним этого параметра — DNO.

Уведомления о доставке отправляются по адресу в параметре From.

Допустимые значения для этого параметра приведены следующим образом:

  • None: нет уведомлений.
  • OnSuccess: уведомлять о успешной доставке.
  • OnFailure: уведомлять о неудачной доставке.
  • Delay: уведомлять о задержке доставки.
  • Never: никогда не уведомлять.

Эти значения определяются как перечисление на основе флага. Можно объединить несколько значений, чтобы задать несколько флагов с помощью этого параметра. Значения можно передать в параметр DeliveryNotification в виде массива значений или в виде строки, разделенной запятыми этих значений. Командлет объединяет значения с помощью операции binary-OR. Передача значений в виде массива является самым простым параметром, а также позволяет использовать завершение табуляции для значений.

Тип:DeliveryNotificationOptions
Aliases:DNO
Допустимые значения:None, OnSuccess, OnFailure, Delay, Never
Position:Named
Default value:None
Обязательно: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"). Дополнительные сведения см. в документации по .NET для Кодировка.CodePage.

Начиная с PowerShell 7.4, можно использовать значение Ansi для параметра кодировки для передачи числового идентификатора для кодовой страницы ANSI текущего языка и региональных параметров, не указывая ее вручную.

Заметка

UTF-7* больше не рекомендуется использовать. По состоянию на PowerShell 7.1 предупреждение записывается, если указать utf7 для параметра кодировки.

Тип:Encoding
Aliases:BE
Допустимые значения:ASCII, BigEndianUnicode, BigEndianUTF32, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32
Position:Named
Default value:ASCII
Обязательно:False
Принять входные данные конвейера:True
Принять подстановочные знаки:False

-From

Требуется параметр From. Этот параметр задает адрес электронной почты отправителя. Введите имя (необязательно) и адрес электронной почты, например Name <someone@fabrikam.com>.

Тип:String
Position:Named
Default value:None
Обязательно:True
Принять входные данные конвейера:True
Принять подстановочные знаки:False

-Port

Указывает альтернативный порт на SMTP-сервере. Значение по умолчанию — 25, которое является портом SMTP по умолчанию.

Тип:Int32
Position:Named
Default value:25
Обязательно:False
Принять входные данные конвейера:True
Принять подстановочные знаки:False

-Priority

Указывает приоритет сообщения электронной почты. Обычный — это значение по умолчанию. Допустимые значения этого параметра: "Обычный", "Высокий" и "Низкий".

Тип:MailPriority
Допустимые значения:Normal, High, Low
Position:Named
Default value:Normal
Обязательно:False
Принять входные данные конвейера:True
Принять подстановочные знаки:False

-ReplyTo

Указывает дополнительные адреса электронной почты (кроме адреса from) для ответа на это сообщение. Введите имена (необязательно) и адрес электронной почты, например Name <someone@fabrikam.com>.

Этот параметр появился в PowerShell 6.2.

Тип:String[]
Position:Named
Default value:None
Обязательно:False
Принять входные данные конвейера:True
Принять подстановочные знаки:False

-SmtpServer

Указывает имя SMTP-сервера, отправляющего сообщение электронной почты.

Значение по умолчанию — это значение переменной предпочтения $PSEmailServer. Если переменная предпочтения не задана и этот параметр не используется, команда Send-MailMessage завершается ошибкой.

Тип:String
Aliases:ComputerName
Position:3
Default value:$PSEmailServer
Обязательно:False
Принять входные данные конвейера:True
Принять подстановочные знаки:False

-Subject

Параметр Subject не требуется. Этот параметр задает тему сообщения электронной почты.

Тип:String
Aliases:sub
Position:1
Default value:None
Обязательно:False
Принять входные данные конвейера:True
Принять подстановочные знаки:False

-To

Требуется параметр To. Этот параметр задает адрес электронной почты получателя. Введите имена (необязательно) и адрес электронной почты, например Name <someone@fabrikam.com>.

Тип:String[]
Position:0
Default value:None
Обязательно:True
Принять входные данные конвейера:True
Принять подстановочные знаки:False

-UseSsl

Протокол SSL используется для установления безопасного подключения к удаленному компьютеру для отправки почты. По умолчанию SSL не используется.

Тип:SwitchParameter
Position:Named
Default value:None
Обязательно:False
Принять входные данные конвейера:True
Принять подстановочные знаки:False

Входные данные

String

Вы можете передать путь и имена файлов вложений в этот командлет.

Выходные данные

None

Этот командлет не возвращает выходные данные.

Примечания

Командлет Send-MailMessage устарел. Дополнительные сведения см. в заметке о совместимости платформы DE0005. Этот командлет не гарантирует безопасные подключения к SMTP-серверам.

DE0005 предлагает использовать стороннюю библиотеку MailKit. Если вы используете Exchange Online, вы можете использовать Send-MgUserMail из пакета SDK Для Microsoft Graph PowerShell.