ビジネス課題への解決策(アイディア)と、新たな発想(+α)が見つかるIT情報メディア

Menu
  1. TOP
  2. データ活用
  3. Windowsのコマンド実行でメール送信(PowerShell)

Windowsのコマンド実行でメール送信(PowerShell)

  • LINEで送る
  • このエントリーをはてなブックマークに追加

前の担当回では、WSHを使ってコマンドからメールを送信する例を記載しました。

せっかくなので、今回はPowerShellを使って書いた例を記載します。

やりかた:

PowerShellでも、WSHの例と同じCDOを使って送ることもできるのですが、それではPowerShellで記事を書き直す意味が無いので、SmtpClientを使って送信する例です。

1. 以下のスクリプトファイルを作成します(例えば、「mail.ps1」)

記述の順序は、わかりやすいようにWSHにあわせています。
SMTP認証、Cc、Bcc、Reply、添付ファイルなどのうち、不要なものは消すかコメントアウトしてください。

# **********************************************************************
# メール送信元の設定
# **********************************************************************

$From = "<送信元メールアドレス>"
$Reply = "<返信メールアドレス>"
$SMTPServer = "<smtpサーバのアドレス>"
$Port = <smtpサーバのポート番号>
$User = "<smtpサーバのユーザ>"
$Pass = "<smtpサーバのパスワード>"
$SMTPClient=New-Object Net.Mail.SmtpClient($SMTPServer,$Port)
$SMTPClient.EnableSsl=<する:$true、しない:$false>
$SMTPClient.Credentials=New-Object Net.NetworkCredential($User,$Pass)

# **********************************************************************
# メール送信先の設定&メール本体の作成>
# **********************************************************************

$To = "<送信先メールアドレス>"
$Cc = "<cc先メールアドレス>"
$Bcc = "<bcc先メールアドレス>"
$Subject = "<メールタイトル>"
$Textbody = "<メール本文>"
$AddAttachment = "<添付ファイル>"

# **********************************************************************
# メール送信
# **********************************************************************

$Mail=New-Object Net.Mail.MailMessage($From,$To,$Subject,$body)
$Mail.Cc.Add($Cc)
$Mail.Bcc.Add($Bcc)
$Attachment=New-Object Net.Mail.Attachment($AddAttachment)
$Mail.Attachments.Add($Attachment)
$SMTPClient.Send($Mail)

2. 1で作成した「mail.ps1」を、コマンドプロンプトから実行します。

ですが、デフォルトでは権限が足らずに実行できません。

C:>powershell .mail.ps1
>.mail.ps1 : このシステムではスクリプトの実行が無効になっているため、ファイル C
:mail.ps1 を読み込むことができません。詳細については、「about_Execution_Policies」(http://go.microsoft.com/fwlink/?LinkID=135170) を参照してください。
発生場所 行:1 文字:1
+ .mail.ps1
+ ~~~~~~~~~~
+ CategoryInfo : セキュリティ エラー: (: ) []、PSSecurityException
+ FullyQualifiedErrorId : UnauthorizedAccess

なので、実行ポリシーを変更してから「mail.ps1」を実行し、再び実行ポリシーを戻す、という手順で実行します。

powershell Set-ExecutionPolicy RemoteSigned
powershell .mail.ps1
powershell Set-ExecutionPolicy Restricted

3. メールが送信されます。


追記:関連コンテンツ

Windowsのコマンド実行でメール送信(WSH)

Windowsのコマンド実行でメール送信(BASP21)

メールマガジンの登録はこちらから
メルマガ登録 お問い合わせ