2015年4月10日金曜日

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

こんにちは。近藤です。


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

やりかた:

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

1. 以下のスクリプトファイルを作成します(例えば、「mail.ps1」)。記述の順序は、わかりやすいようにWSHにあわせています。SMTP認証、CcBccReply、添付ファイルなどのうち、不要なものは消すかコメントアウトしてください。


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

   $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. メールが送信されます。

0 件のコメント:

コメントを投稿