PowerShell を利用して Office 365 からメールを送信する

以前 Ruby を使って Gmail 経由でメール送信 というブログを書きましたが、今度は Windows で定期実行される処理(PowerShell)からレポートメールを送る必要があったのでメモ。

環境

  • Windows 10 Pro
  • PowerShell 5.1

サンプルコード

自分のメールアドレス(差出人)が miyamiya@example.com 、宛先のメールアドレスが misono@example.jp としてサンプルコードを書いてみる。ここでは miyamiya@example.com が Office 365 のアカウントとする。

# Office 365 の認証情報
$o365User = 'miyamiya@example.com';
$o365Pass = 'Office365 のパスワード';
# 差出人
$from    = 'miyamiya@example.com';
# 宛先
$to      = 'misono@example.jp';
# メールのタイトルと本文
$subject = 'メールのタイトル';
$body    = 'メールの本文';

# MailMessage インスタンス作成
$msg = New-Object System.Net.Mail.MailMessage($from, $to, $subject, $body);

# Office 365 の SMTP サーバーを設定して SmtpClient インスタンスを作成
$SMTPClient = New-Object Net.Mail.SmtpClient("smtp.office365.com", 587) ;

# SSL を True に設定
$SMTPClient.EnableSsl = $true;

# Office 365 への認証
$SMTPClient.Credentials = New-Object System.Net.NetworkCredential($o365User, $o365Pass);

# メール送信
$SMTPClient.send($msg);

参考