Windows Server
 Computer >> コンピューター >  >> システム >> Windows Server

Send-MailMessage:PowerShellからのメールの送信

SMTPサーバーを介して電子メールメッセージを送信するには、 Send-MailMessageを使用できます。 PowerShellコマンドレット。この組み込みのコマンドレットを使用して、PowerShellバージョン2.0以降で電子メールを送信できます(以前は、.Net System.Net.Mailを使用できました。 メールを送信するクラス)。この記事では、 Send-MailMessageの使用方法を紹介します PowerShellスクリプトから電子メールを送信します。

コマンドレットの構文を取得するには、次のコマンドを実行します。

get-help Send-MailMessage

Send-MailMessage [-To] <String[]> [-Subject] <String> [[-Body] <String>] [[-SmtpServer] <String>] [-Attachments <String[]>] [-Bcc <String[]>] [-BodyAsHtml] [-Cc <String[]>] [-Credential <PSCredential>] [-DeliveryNotificationOption {None | OnSuccess | OnFailure | Delay | Never}] [-Encoding <Encoding>] -From <String> [-Port <Int32>] [-Priority {Normal | Low | High}] [-UseSsl] [<CommonParameters>]
The Send-MailMessage cmdlet sends an email message from within Windows PowerShell.

Send-MailMessage:PowerShellからのメールの送信

主なオプションは次のとおりです。

  • から は送信者アドレスです(SMTPサーバーが送信者のアドレスをチェックせず、匿名で電子メールを送信できる場合は、実際のSMTPアドレスを指定する必要はありません。任意の電子メールアドレスに代わって電子メールメッセージを送信できます)。
  • 宛先 –受信者のメールアドレス;
  • SMTPServer –電子メールの送信に使用するSMTPサーバーのアドレス。
$ PSEmailServerでメールサーバーアドレスを設定した場合 環境変数の場合、Send-MailMessageコマンドレットでSMTPサーバーアドレスを指定する必要はありません。

次の単純なPowerShellコマンドは、指定された件名と本文を含む電子メールを複数の受信者に送信します。

Send-MailMessage -From'ps-script@woshub.com' -To'serveradmin@woshub.com'、'helpdesk@woshub.com' -Subject "Test Email Alert" -Body "This is email body text" –smtpServer'smtp.woshub.com'

コマンドレットの属性を簡単に編集できるように、sendemailコマンドは次のように表すことができます。

Send-MailMessage `
-SmtpServer smtp.woshub.com`
-To'serveradmin@woshub.com'、'helpdesk@woshub.com' `
-From'ps- script@woshub.com'`
-件名"テスト"`
-本文"PowerShellを使用したメールの送信"`
-エンコーディング'UTF8'

最後のコマンドで、電子メールのUTF8エンコーディングを追加で設定していることに注意してください。そうしないと、メールの件名または本文にANSI以外の文字が含まれていると、正しく表示されません。

デフォルトでは、ANSIおよびASCIIエンコーディングがWindowsPowerShellで使用されます。 PSバージョンをPowerShellCoreに更新した場合、このバージョンは既にデフォルトでUTF-8エンコーディングを使用していることに注意してください。

デフォルトでは、Send-MailMessageコマンドレットは標準のSMTPポートTCP 25を介して電子メールを送信しようとします。SMTPサーバーが暗号化されたプロトコルのみを使用して電子メールを送信できる場合は、ポート番号を指定できます(ほとんどの場合は465または587です)。 )および UseSsl オプション:

-SmtpServer'smtp.woshub.com' -Port 465 –UseSsl

次の表は、PowerShellからメッセージを送信するために使用できる一般的なパブリック電子メールプロバイダーのSMTPサーバーパラメーターを示しています(アカウントインターフェイスでSMTP経由の電子メールの送信を許可する必要があることに注意してください):

名前 SMTPサーバーアドレス ポート 暗号化タイプ
Gmail smtp.gmail.com 587

25

465

TLS

TLS

SSL

Office 365 smtp.office365.com 587 TLS
Outlook.com smtp-mail.outlook.com 587 TLS
Yahoo smtp.mail.yahoo.com 587 TLS
iCloudメール smtp.mail.me.com 587 TLS
AOL smtp.aol.com 465 SSL

SMTPサーバーが匿名での電子メールの送信を禁止している場合(リレーが拒否されている場合)、次のエラーが表示されます:

5.7.1 Client was not authenticated.

次に、 –資格情報を使用してSMTPサーバーで認証できます。 オプション。

認証するユーザー資格情報をインタラクティブに要求できます:

Send-MailMessage……-Credential(Get-Credential)

Send-MailMessage:PowerShellからのメールの送信

また、変数で認証に使用するアカウントを指定できます:

$ cred =Get-Credential
Send-MailMessage ... -Credential $ cred

PowerShellスクリプトでSMTPサーバーに直接接続するためのパスワードを保存する場合は、次の構文を使用します。

$ mypasswd =ConvertTo-SecureString "smP @ ssdw0rrd2" -AsPlainText -Force
$ mycreds =New-Object System.Management.Automation.PSCredential( "user1@woshub.com"、$ mypasswd)
Send-MailMessage ... –Credential $ mycreds

PowerShellスクリプトで保存されたクレデンシャルを安全に使用する記事を参照してください。

メールに添付ファイルを追加する場合は、 –Attachmentsを使用してください オプション。以下の例では、HTML形式で電子メールを送信し、ローカルディスクからfile1.txtとinstall.logを添付します。 Gmail SMTPサーバーを使用します(最初にGmailでアプリのパスワードを作成し、Gmailのパスワードの代わりにSMTP認証に使用する必要があります):

$ MailMessage =@ {
To ="admin@woshub.com"
Bcc ="manager@woshub.com"、 "manager2@woshub.com"
From ="smtpsender1 @ gmail.com "
Subject =" DC Server Report "
Body ="

Welcome!

Generated: $(Get-Date-フォーマットg)


Smtpserver ="smtp.gmail.com"
Port =587
UseSsl =$ true
BodyAsHtml =$ true
Encoding =「UTF8」
添付ファイル=「C:\ Logs \ file1.txt」、「C:\ Logs \install.log」
}
Send-MailMessage @MailMessage -Credential $ cred

添付ファイル付きのHTML形式のメールがGmailインターフェースでどのように表示されるかを次に示します。

Send-MailMessage:PowerShellからのメールの送信

-DeliveryNotificationOption を使用して、電子メールの配信通知(開封確認)を構成できます 。配信通知を使用すると、受信者が電子メールを受信した場合に通知を受けることができます。

使用可能な通知タイプは次のとおりです。

  • OnSuccess (配信が成功したかどうかを通知します)
  • OnFailure (配信が失敗した場合は通知してください)
  • 遅延 (配達が遅れている場合は通知してください)


  1. Mac から暗号化された電子メールを送信する方法

    通常、メールの交換は安全な問題であり、プロバイダーは送受信するメールのセキュリティに注意を払っています。ただし、電子メールの暗号化は、使用しているすべての電子メール サービスで利用できるとは限りません。メールの安全性をさらに高めたい場合は、メール アプリで使用することをお勧めします。 Mac を使用している限り、マシンのストック メール アプリから暗号化されたメールを送信できます。 組み込みのメール アプリを使用すると、メールを送信する前に暗号化できます。この暗号化プロセスでは、実際には Mac に電子メール証明書をインストールする必要があります。この証明書は、利用可能なオンライン プロ

  2. Excel リストからメールを送信する方法 (2 つの効果的な方法)

    大規模なグループに大量のメールを送信する必要がある場合は、繰り返しのタスクをすばやく処理できる自動化されたプロセスが必要になります。 Excel の作成 電子メールのリストを含むファイルは、大量の電子メールを送信する最も一般的な方法です。このチュートリアルでは、 Excel からメールを送信する方法を紹介します。 多数の人に自動的にリストします。 Excel リストからメールを送信するための 2 つの便利な方法 下の画像には、一部の人の名前、電子メール、登録番号を含むデータ セットが含まれています。 Excel から リスト、各個人に電子メールを送信する必要があります。これを実現するに