Udostępnij za pośrednictwem


Send-MailMessage

Wysyła wiadomość e-mail.

Składnia

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

Opis

Polecenie Send-MailMessage cmdlet wysyła wiadomość e-mail z poziomu programu PowerShell.

Należy określić serwer SMTP (Simple Mail Transfer Protocol) lub polecenie kończy się niepowodzeniem Send-MailMessage . Użyj parametru SmtpServer lub ustaw zmienną $PSEmailServer na prawidłowy serwer SMTP. Wartość przypisana do $PSEmailServer jest domyślnym ustawieniem SMTP dla programu PowerShell. Aby uzyskać więcej informacji, zobacz about_Preference_Variables.

Ostrzeżenie

Polecenie cmdlet Send-MailMessage jest przestarzałe. To polecenie cmdlet nie gwarantuje bezpiecznych połączeń z serwerami SMTP. Chociaż nie ma natychmiastowego zastąpienia dostępnego w programie PowerShell, zalecamy, aby nie używać polecenia Send-MailMessage. Aby uzyskać więcej informacji, zobacz Artykuł zgodność platformy DE0005.

Przykłady

Przykład 1. Wysyłanie wiadomości e-mail od jednej osoby do innej osoby

Ten przykład wysyła wiadomość e-mail od jednej osoby do innej osoby.

Parametry From, To i Subject są wymagane przez Send-MailMessageparametr . W tym przykładzie użyto zmiennej domyślnej $PSEmailServer dla serwera SMTP, więc parametr SmtpServer nie jest wymagany.

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

Polecenie Send-MailMessage cmdlet używa parametru From , aby określić nadawcę komunikatu. Parametr To określa adresata wiadomości. Parametr Temat używa ciągu tekstowego Test mail jako wiadomości, ponieważ opcjonalny parametr Treść nie jest dołączony.

Przykład 2. Wysyłanie załącznika

Ten przykład wysyła wiadomość e-mail z załącznikiem.

$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

Polecenie Send-MailMessage cmdlet używa parametru From , aby określić nadawcę komunikatu. Parametr To określa adresatów wiadomości. Parametr Temat opisuje zawartość komunikatu. Parametr Body jest zawartością komunikatu.

Parametr Załączniki określa plik w bieżącym katalogu dołączonym do wiadomości e-mail. Parametr Priority ustawia komunikat na High priorytet. Parametr DeliveryNotificationOption określa dwie wartości i OnSuccess OnFailure. Nadawca otrzyma powiadomienia e-mail, aby potwierdzić powodzenie lub niepowodzenie dostarczania wiadomości. Parametr SmtpServer ustawia serwer SMTP na smtp.fabrikam.comwartość .

Przykład 3. Wysyłanie wiadomości e-mail na listę adresową

W tym przykładzie wiadomość e-mail jest wysyłana do listy adresowej.

$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

Polecenie Send-MailMessage cmdlet używa parametru From , aby określić nadawcę komunikatu. Parametr To określa adresatów wiadomości. Parametr CC wysyła kopię wiadomości do określonego adresata. Parametr UDW wysyła ślepą kopię komunikatu. Kopia niewidoma to adres e-mail, który jest ukryty dla innych adresatów. Parametr Temat jest komunikatem, ponieważ opcjonalny parametr Treść nie jest dołączony.

Parametr Credential określa poświadczenia administratora domeny są używane do wysyłania komunikatu. Parametr UseSsl określa, że protokół Secure Socket Layer (SSL) tworzy bezpieczne połączenie.

Parametry

-Attachments

Określa ścieżkę i nazwy plików, które mają być dołączone do wiadomości e-mail. Możesz użyć tego parametru lub potoku ścieżek i nazw plików do Send-MailMessage.

Typ:String[]
Aliasy:PsPath
Position:Named
Domyślna wartość:None
Wymagane:False
Akceptowanie danych wejściowych potoku:True
Akceptowanie symboli wieloznacznych:False

-Bcc

Określa adresy e-mail, które otrzymują kopię wiadomości, ale nie są wyświetlane jako adresaci wiadomości. Wprowadź nazwy (opcjonalnie) i adres e-mail, na przykład Name <someone@fabrikam.com>.

Typ:String[]
Position:Named
Domyślna wartość:None
Wymagane:False
Akceptowanie danych wejściowych potoku:True
Akceptowanie symboli wieloznacznych:False

-Body

Określa zawartość wiadomości e-mail.

Typ:String
Position:2
Domyślna wartość:None
Wymagane:False
Akceptowanie danych wejściowych potoku:True
Akceptowanie symboli wieloznacznych:False

-BodyAsHtml

Określa, że wartość parametru Body zawiera kod HTML.

Typ:SwitchParameter
Aliasy:BAH
Position:Named
Domyślna wartość:None
Wymagane:False
Akceptowanie danych wejściowych potoku:True
Akceptowanie symboli wieloznacznych:False

-Cc

Określa adresy e-mail, do których jest wysyłana kopia węgla (CC) wiadomości e-mail. Wprowadź nazwy (opcjonalnie) i adres e-mail, na przykład Name <someone@fabrikam.com>.

Typ:String[]
Position:Named
Domyślna wartość:None
Wymagane:False
Akceptowanie danych wejściowych potoku:True
Akceptowanie symboli wieloznacznych:False

-Credential

Określa konto użytkownika, które ma uprawnienia do wykonania tej akcji. Wartość domyślna to użytkownik bieżący.

Wpisz nazwę użytkownika, taką jak User01 lub Domain01\User01. Możesz też wprowadzić obiekt PSCredential , taki jak jeden z Get-Credential polecenia cmdlet.

Poświadczenia są przechowywane w obiekcie PSCredential , a hasło jest przechowywane jako secureString.

Uwaga

Aby uzyskać więcej informacji na temat ochrony danych SecureString , zobacz Jak bezpieczny jest protokół SecureString?.

Typ:PSCredential
Position:Named
Domyślna wartość:Current user
Wymagane:False
Akceptowanie danych wejściowych potoku:True
Akceptowanie symboli wieloznacznych:False

-DeliveryNotificationOption

Określa opcje powiadomienia o dostarczaniu wiadomości e-mail. Można określić wiele wartości. Brak jest wartością domyślną. Alias dla tego parametru to DNO.

Powiadomienia o dostarczaniu są wysyłane do adresu w parametrze From .

Dopuszczalne wartości tego parametru są następujące:

  • None: Brak powiadomienia.
  • OnSuccess: Powiadom o pomyślnym zakończeniu dostarczania.
  • OnFailure: Powiadom, czy dostarczanie nie powiedzie się.
  • Delay: Powiadom o opóźnieniu dostarczania.
  • Never: Nigdy nie powiadamiaj.

Te wartości są definiowane jako wyliczenie oparte na flagach. Możesz połączyć wiele wartości ze sobą, aby ustawić wiele flag przy użyciu tego parametru. Wartości można przekazać do parametru DeliveryNotification jako tablicę wartości lub jako ciąg rozdzielany przecinkami tych wartości. Polecenie cmdlet połączy wartości przy użyciu operacji binary-OR. Przekazywanie wartości jako tablicy jest najprostszą opcją, a także umożliwia użycie uzupełniania tabulatorów na wartościach.

Typ:DeliveryNotificationOptions
Aliasy:DNO
Dopuszczalne wartości:None, OnSuccess, OnFailure, Delay, Never
Position:Named
Domyślna wartość:None
Wymagane:False
Akceptowanie danych wejściowych potoku:True
Akceptowanie symboli wieloznacznych:False

-Encoding

Określa typ kodowania dla pliku docelowego. Domyślna wartość to utf8NoBOM.

Dopuszczalne wartości tego parametru są następujące:

  • ascii: używa kodowania dla zestawu znaków ASCII (7-bitowych).
  • ansi: używa kodowania dla strony kodowej ANSI bieżącej kultury. Ta opcja została dodana w programie PowerShell 7.4.
  • bigendianunicode: Koduje w formacie UTF-16 przy użyciu kolejności bajtów big-endian.
  • bigendianutf32: Koduje w formacie UTF-32 przy użyciu kolejności bajtów big-endian.
  • oem: używa domyślnego kodowania dla programów MS-DOS i konsoli.
  • unicode: Koduje w formacie UTF-16 przy użyciu kolejności bajtów little-endian.
  • utf7: Koduje w formacie UTF-7.
  • utf8: Koduje w formacie UTF-8.
  • utf8BOM: Koduje w formacie UTF-8 za pomocą języka Byte Order Mark (BOM)
  • utf8NoBOM: Koduje w formacie UTF-8 bez znaku kolejności bajtów (BOM)
  • utf32: Koduje w formacie UTF-32.

Począwszy od programu PowerShell 6.2, parametr Kodowanie umożliwia również numeryczne identyfikatory zarejestrowanych stron kodu (takich jak ) lub nazwy ciągów zarejestrowanych stron kodu (na przykład -Encoding 1251-Encoding "windows-1251"). Aby uzyskać więcej informacji, zobacz dokumentację platformy .NET dotyczącą pliku Encoding.CodePage.

Począwszy od programu PowerShell 7.4, można użyć Ansi wartości parametru Kodowanie , aby przekazać identyfikator liczbowy dla strony kodowej ANSI bieżącej kultury bez konieczności ręcznego określania go.

Uwaga

UtF-7* nie jest już zalecane do użycia. Zgodnie z programem PowerShell 7.1 ostrzeżenie jest zapisywane w przypadku określenia utf7 parametru Kodowanie .

Typ:Encoding
Aliasy:BE
Dopuszczalne wartości:ASCII, BigEndianUnicode, BigEndianUTF32, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32
Position:Named
Domyślna wartość:ASCII
Wymagane:False
Akceptowanie danych wejściowych potoku:True
Akceptowanie symboli wieloznacznych:False

-From

Parametr From jest wymagany. Ten parametr określa adres e-mail nadawcy. Wprowadź nazwę (opcjonalnie) i adres e-mail, na przykład Name <someone@fabrikam.com>.

Typ:String
Position:Named
Domyślna wartość:None
Wymagane:True
Akceptowanie danych wejściowych potoku:True
Akceptowanie symboli wieloznacznych:False

-Port

Określa alternatywny port na serwerze SMTP. Wartość domyślna to 25, czyli domyślny port SMTP.

Typ:Int32
Position:Named
Domyślna wartość:25
Wymagane:False
Akceptowanie danych wejściowych potoku:True
Akceptowanie symboli wieloznacznych:False

-Priority

Określa priorytet wiadomości e-mail. Wartość normalna to wartość domyślna. Dopuszczalne wartości tego parametru to Normal, High i Low.

Typ:MailPriority
Dopuszczalne wartości:Normal, High, Low
Position:Named
Domyślna wartość:Normal
Wymagane:False
Akceptowanie danych wejściowych potoku:True
Akceptowanie symboli wieloznacznych:False

-ReplyTo

Określa dodatkowe adresy e-mail (inne niż adres od) do użycia w celu udzielenia odpowiedzi na tę wiadomość. Wprowadź nazwy (opcjonalnie) i adres e-mail, na przykład Name <someone@fabrikam.com>.

Ten parametr został wprowadzony w programie PowerShell 6.2.

Typ:String[]
Position:Named
Domyślna wartość:None
Wymagane:False
Akceptowanie danych wejściowych potoku:True
Akceptowanie symboli wieloznacznych:False

-SmtpServer

Określa nazwę serwera SMTP, który wysyła wiadomość e-mail.

Wartość domyślna to wartość zmiennej $PSEmailServer preferencji. Jeśli zmienna preferencji nie jest ustawiona i ten parametr nie jest używany, Send-MailMessage polecenie kończy się niepowodzeniem.

Typ:String
Aliasy:ComputerName
Position:3
Domyślna wartość:$PSEmailServer
Wymagane:False
Akceptowanie danych wejściowych potoku:True
Akceptowanie symboli wieloznacznych:False

-Subject

Parametr Subject nie jest wymagany. Ten parametr określa temat wiadomości e-mail.

Typ:String
Aliasy:sub
Position:1
Domyślna wartość:None
Wymagane:False
Akceptowanie danych wejściowych potoku:True
Akceptowanie symboli wieloznacznych:False

-To

Parametr To jest wymagany. Ten parametr określa adres e-mail odbiorcy. Wprowadź nazwy (opcjonalnie) i adres e-mail, na przykład Name <someone@fabrikam.com>.

Typ:String[]
Position:0
Domyślna wartość:None
Wymagane:True
Akceptowanie danych wejściowych potoku:True
Akceptowanie symboli wieloznacznych:False

-UseSsl

Protokół SSL (Secure Sockets Layer) służy do nawiązywania bezpiecznego połączenia z komputerem zdalnym w celu wysyłania poczty. Domyślnie protokół SSL nie jest używany.

Typ:SwitchParameter
Position:Named
Domyślna wartość:None
Wymagane:False
Akceptowanie danych wejściowych potoku:True
Akceptowanie symboli wieloznacznych:False

Dane wejściowe

String

Możesz przekazać ścieżkę i nazwy plików załączników do tego polecenia cmdlet.

Dane wyjściowe

None

To polecenie cmdlet nie zwraca żadnych danych wyjściowych.

Uwagi

Polecenie cmdlet Send-MailMessage jest przestarzałe. Aby uzyskać więcej informacji, zobacz Artykuł zgodność platformy DE0005. To polecenie cmdlet nie gwarantuje bezpiecznych połączeń z serwerami SMTP.

DE0005 sugeruje użycie biblioteki innej firmy, MailKit. Jeśli używasz usługi Exchange Online, możesz użyć polecenia Send-MgUserMail z zestawu Microsoft Graph PowerShell SDK.