FC2ブログ

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

PowerShellでメール送信

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値の指定に$を付けるのを忘れて少しハマりました。

以上

コメントの投稿

非公開コメント

承認待ちコメント

このコメントは管理者の承認待ちです
プロフィール

Author:p4p.makochi
趣味や仕事でAndroidアプリ、WP7アプリの開発をしています。
最近、Windows Azureも始めました。

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QR
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。