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 OnSuccessOnFailure. 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[]
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

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.