- セキュリティソフトでメール送信を除外。
- Google設定で安全でないアプリを許可するよう設定。※
- PowerShellでメール送信。
◆ダウンロード
GrobalIPMailv0.2.zip
GrobalIPMailv0.1.zip
◆手順
- セキュリティソフトでメール送信を除外。(以下AVGの場合)
- タスクバーのAVG(ver17.9.3040)をクリック。
- [メニュー]-[設定]-[コンポーネント]-[(メールシールドの)カスタマイズ]の順に選択。
- 送信メールをスキャン(SMTP)のチェックを外し、[OK]ボタン-[OK]ボタン。
- Google設定で安全でないアプリを許可するよう設定。
- Chromeを起動。
- アドレス欄にgoogle.comと入力。
- Chrome右上の:::ボタン(Googleアプリボタン)押下。
- [アカウント]を選択。
- [端末のアクティビティとセキュリティ イベント]を選択。
- [アカウントにアクセスできるアプリ]を選択。
- [安全性の低いアプリの許可]を無効から有効に変更。
- PowerShellでメール送信。
(上述のzipを使う場合は、同梱のreadme.txtを参照のこと。下記のコードとは別で、タスクスケジューラによる定期処理を行う。) - 後述の簡易コードをファイルに保存。ファイル名はgipmail.ps1。
その際、[ユーザ名]と[ぱすわーど]は読み替えること。 - gipmail.ps1を右クリックし、[PowerShellで実行]を選択。
$from = "ユーザ名@gmail.com"
$to = "ユーザ名@gmail.com"
$server = "smtp.gmail.com"
$port = 587
$user = "ユーザ名@gmail.com"
$pass = "ぱすわーど"
curl ipinfo.io | ConvertFrom-Json | sv ret
$ret.ip
$client = New-Object Net.Mail.SmtpClient($server, $port)
$client.EnableSsl = $true
$client.Credentials = New-Object Net.NetworkCredential($user, $pass)
New-Object Net.Mail.MailMessage($from, $to,"Global IP", $ret.ip) | sv msg
$client.Send($msg)
◆zip内のコード(GrobalIPメール送信.ps1:要setting.json)
# 設定ファイルのパス・前回取得したグローバルIPアドレス記録ファイルのパス
$MyInvocation.MyCommand.Path | Split-Path -Parent | sv path
Join-Path $path setting.json | sv setting_path
Join-Path $path latest_gip.txt | sv gip_path
# 設定ファイル読み込み。
cat $setting_path | ConvertFrom-Json | sv conf
# 認証情報生成
ConvertTo-SecureString $conf.pass | sv pass
New-Object System.Management.Automation.PSCredential $conf.user, $pass | sv cred
# 前回のIPをファイルから取得
if (Test-Path $gip_path) {
cat $gip_path | sv latestip
}
# グローバルIP取得サイトにアクセス。
curl ipinfo.io | ConvertFrom-Json | sv ret
# 前回のIPと今回取得したIPが不一致の場合のみ、ファイル書き込み&メール送信。
if ($latestip -ne $ret.ip) {
Send-MailMessage `
-To $conf.to `
-From $conf.from `
-SmtpServer $conf.server `
-Port $conf.port `
-Subject "Global IP" `
-Credential $cred `
-UseSsl `
-Body $ret.ip
# メール送信に成功した場合のみ、グローバルIPアドレスを更新
if ($? -eq $true) {
$ret.ip | tee -f $gip_path
}
}
0 件のコメント:
コメントを投稿