ビジネス課題への解決策(アイディア)と、新たな発想(+α)が見つかる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_Polici
   es」(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. メールが送信されます。
メールマガジンの登録はこちらから
メルマガ登録 お問い合わせ