PowerShellでメール送信

  • 29
    Like
  • 4
    Comment
More than 1 year has passed since last update.

はじめに

データベースから取得したCSVデータをメールで送信する案件が発生した。
CSVを暗号化zip圧縮にする必要があるが取り敢えずは、
zipファイルをメールに添付して送信するスクリプトを作ってみた。

環境

PowerShell v2.0以降
.Net Framework 2.0以降

解説

.NET Framework2.0以降にある
SmtpClientとMailMessage、Attachmentオブジェクトを呼び出して
作成している。
僕が紹介した当時は、Portの変更等ができなかったので。
今はSend-MailMessageで事足ります。

メール送信

$From="送信元メールアドレス"
$Subject="納品書"
$body="納品内容を送信致します。"
# このファイルの場所を取得
$FilePath=Split-Path ( & { $myInvocation.ScriptName } ) -parent
$File=@(Get-ChildItem $FilePath'\添付ファイル.zip')
$To="宛先メールアドレス"

# 送信メールサーバーの設定
$SMTPServer="メールサーバーアドレス"
$Port="ポート番号"
$User="送信ユーザー名"
$Password="送信パスワード"
$SMTPClient=New-Object Net.Mail.SmtpClient($SMTPServer,$Port)
# SSL暗号化通信しない $false
$SMTPClient.EnableSsl=$false
$SMTPClient.Credentials=New-Object Net.NetworkCredential($User,$Password)

# メールメッセージの作成
$MailMassage=New-Object Net.Mail.MailMessage($From,$To,$Subject,$body)
# ファイルから添付ファイルを作成
$Attachment=New-Object Net.Mail.Attachment($File)
# メールメッセージに添付
$MailMassage.Attachments.Add($Attachment)
# メールメッセージを送信
$SMTPClient.Send($MailMassage)

参考サイト

Windows PowerShell を使用して GMail や Office 365 からメールを送信する

MailMessage.Attachments プロパティ

PSCredential資格情報を作ってみる

Send-MailMessage