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-MailMessage
parametr . 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.com
wartość .
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[] |
Aliases: | PsPath |
Position: | Named |
wartość domyślna: | None |
Wymagane: | False |
Accept pipeline input: | True |
Accept wildcard characters: | 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 |
wartość domyślna: | None |
Wymagane: | False |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-Body
Określa zawartość wiadomości e-mail.
Typ: | String |
Position: | 2 |
wartość domyślna: | None |
Wymagane: | False |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-BodyAsHtml
Określa, że wartość parametru Body zawiera kod HTML.
Typ: | SwitchParameter |
Aliases: | BAH |
Position: | Named |
wartość domyślna: | None |
Wymagane: | False |
Accept pipeline input: | True |
Accept wildcard characters: | 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 |
wartość domyślna: | None |
Wymagane: | False |
Accept pipeline input: | True |
Accept wildcard characters: | 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 |
wartość domyślna: | Current user |
Wymagane: | False |
Accept pipeline input: | True |
Accept wildcard characters: | 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 |
Aliases: | DNO |
akceptowane wartości: | None, OnSuccess, OnFailure, Delay, Never |
Position: | Named |
wartość domyślna: | None |
Wymagane: | False |
Accept pipeline input: | True |
Accept wildcard characters: | 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 |
Aliases: | BE |
akceptowane wartości: | ASCII, BigEndianUnicode, BigEndianUTF32, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32 |
Position: | Named |
wartość domyślna: | ASCII |
Wymagane: | False |
Accept pipeline input: | True |
Accept wildcard characters: | 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 |
wartość domyślna: | None |
Wymagane: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-Port
Określa alternatywny port na serwerze SMTP. Wartość domyślna to 25, czyli domyślny port SMTP.
Typ: | Int32 |
Position: | Named |
wartość domyślna: | 25 |
Wymagane: | False |
Accept pipeline input: | True |
Accept wildcard characters: | 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 |
akceptowane wartości: | Normal, High, Low |
Position: | Named |
wartość domyślna: | Normal |
Wymagane: | False |
Accept pipeline input: | True |
Accept wildcard characters: | 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 |
wartość domyślna: | None |
Wymagane: | False |
Accept pipeline input: | True |
Accept wildcard characters: | 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 |
Aliases: | ComputerName |
Position: | 3 |
wartość domyślna: | $PSEmailServer |
Wymagane: | False |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-Subject
Parametr Subject nie jest wymagany. Ten parametr określa temat wiadomości e-mail.
Typ: | String |
Aliases: | sub |
Position: | 1 |
wartość domyślna: | None |
Wymagane: | False |
Accept pipeline input: | True |
Accept wildcard characters: | 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 |
wartość domyślna: | None |
Wymagane: | True |
Accept pipeline input: | True |
Accept wildcard characters: | 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 |
wartość domyślna: | None |
Wymagane: | False |
Accept pipeline input: | True |
Accept wildcard characters: | False |
Dane wejściowe
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.