Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
超軽い話題を。
Windows PowerShell を使用してメールを送信するには Send-MailMessage コマンドレットを使用します。例えば、以下のように使います。
Send-MailMessage -To junichia@ms.com -From junichia@hoge.com -SmtpServer smtp.hoge.com -Credential junichia -Subject "パスワード未変更者へ" -Body "パスワードを変更してください!" -UseSsl |
-Credential はSMTPサーバーに接続するための資格情報です。事前に Get-Credential で設定してもよいですし、上の例のように指定すればパスワード入力のためのポップアップが表示されます。
このように、Send-MailMessage は簡単でとても便利なのですが、SMTP のポート番号を変更できないという難点があります。
例えば、Gmail 、Office 365 、Hotmail ともに、メッセージのサブミッション時には Port 587 を使用しています。そのため、Send-MailMessage を使用してメールを送信することができません。
では、どうしたらよいかというと、.NET Framework の Net.Mail.SmtpClient を直接使用します。
例えば、gmail の場合には SMTPサーバーは smtp.gmail.com なので 以下のように書きます。
$EmailFrom = “user@gmail.com” $EmailTo =”junichia@ms.com” $Subject = "タイトル" $Body = "本文" $SMTPServer = "smtp.gmail.com" $SMTPClient = New-Object Net.Mail.SmtpClient($SmtpServer, 587) $SMTPClient.EnableSsl = $true $SMTPClient.Credentials = New-Object System.Net.NetworkCredential(“user@gmail.com”, "password”); $SMTPClient.Send($EmailFrom, $EmailTo, $Subject, $Body) |
Office 365 ならば以下の通りです。
| $EmailFrom = “user@hoge.onmicrosoft.com” $EmailTo =”junichia@ms.com” $Subject = "タイトル" $Body = "本文" $SMTPServer = "pod51021.outlook.com" $SMTPClient = New-Object Net.Mail.SmtpClient($SmtpServer, 587) $SMTPClient.EnableSsl = $true $SMTPClient.Credentials = New-Object System.Net.NetworkCredential(“user@hoge.onmicrosoft.com”, "password”); $SMTPClient.Send($EmailFrom, $EmailTo, $Subject, $Body) |
知っていれば簡単ですね。
Scripting Guy の以下の投稿も参考にしてください。
Send Email from Exchange Online by Using PowerShell - Hey, Scripting Guy! Blog - Site Home - TechNet Blogs