前の担当回では、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)