上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
Windows環境でコマンドラインからメール送信がしたかったのでPowerShellを使ってみました。
手慣れたJavamailでも実装できたのだが、Windows Azureとかにも応用が利きそうだったので
今回はPowerShellにしました。
■準備
Windows 7環境はPowerShellがプリインストールされているのでインストールは不要
これより前のOSだと別途インストールが必要みたいです。
■PowerShellの設定
デフォルトのポリシーではPowerShellのコマンド実行が許可されていない為、以下のコマンドでポリシーを変更
まずはPowerShellの起動
> powershell
# 現在のポリシーを確認
> Get-ExecutionPolicy
# ポリシーを設定
> Set-ExecutionPolicy RemoteSigned
RemoteSignedはリモート経由のスクリプトのみ証明書を要求するという設定。
ローカルのスクリプトは無条件に実行できる。
基本はこの設定にしておくのが良いようです。
■スクリプト作成
スクリプトの作成には以下のプリンされてるツールを使うのが一般的。
PowerShell ISE
以下がスクリプト。
SMTP、ポート等の設定は各メールベンダのサイトで設定を確認して下さい。
今回はgmailでメール送信しました。
-----
$username = "gmailのメールアドレス"
$password = "gmailのパスワード"
$smtphost = "smtp.gmail.com"
$fromaddr = "gmailのメールアドレス"
$smtpport = 587
$toaddr = "宛先"
$mail = New-Object System.Net.Mail.MailMessage
$mail.from = $fromaddr
$mail.to.Add($toaddr)
$mail.Subject = "件名"
$mail.Body = "内容"
$sc = New-Object Net.Mail.SmtpClient($smtphost)
$Credentials = new-object System.Net.networkCredential($username, $password)
$sc.UseDefaultCredentials = $false;
$sc.EnableSsl = $true
$sc.Credentials=$Credentials
$sc.Port = 587
$sc.Timeout = 10000
$sc.Send($mail)
-----
EnableSslの設定をtrueにしないとgmailの場合認証が通りません。
PowerShell初めてだったのでBoolean値の指定に$を付けるのを忘れて少しハマりました。
以上