PowerShellを使って日本語メールを送信する方法(v2.0も対応する版)

PowerShellを使ってメールを送信する方法を探すと2種類でてくる

・PowerShell cmdletの「Send-MailMessage」を使う
・Net.Mail.SmtpClient と Net.Mail.MailMessage を使う

UTF8で日本語メールを送る場合を考えると、Send-MailMessageを使用することで用が足りるようである。

ただ、Windows7で標準インストールとなるPowerShell v2.0だと、「Send-MailMessage -Encoding UTF8 ~」と指定すると、下記のエラーとなり、エンコーディングの指定がうまく行かない。そして、エンコーディングを指定せずに送ると日本語は文字化ける。

Send-MailMessage : パラメーター 'Encoding' をバインドできません。"eutf8" の値を "System.String" 型から "System.Text.Encoding" 型に変換できません。
発生場所 行:1 文字:28
+ Send-MailMessage -Encoding eutf8
+                            ~~~~~
    + CategoryInfo          : InvalidArgument: (:) [Send-MailMessage]、ParameterBindingException
    + FullyQualifiedErrorId : CannotConvertArgumentNoMessage,Microsoft.PowerShell.Commands.SendMailMessage

これは、「UTF8」の代わりに、System.Text.Encodingに変換したUTF8を指定「([System.Text.Encoding]::UTF8)」することで解決できる。

また、PowerShell v2.0のSend-MailMessageには、SMTPポートの番号指定が無い。
25番以外の場合は、「Net.Mail.SmtpClient と Net.Mail.MailMessage」の方を行う必要があるようだ。

そんなわけで、スクリプト例は下記の様になる。
なお、PowerShell Core 6.0でも利用できた。

$smtpserver= "サーバ名"
$port= 25
$mailfrom="ユーザ名@ドメイン名"
$mailtoArray=@(
   "ユーザ1@ドメイン名",
   "ユーザ2@ドメイン名",
   "ユーザ3@ドメイン名"
   )
$mailsubject="メール送信テスト"
$mailbody="これはメールの送信テストです。`n"+"正常に送信出来ていますか?"

if($PSVersionTable.PSVersion.Major -gt 2){
   Send-MailMessage -From $mailfrom -To $mailtoArray -SmtpServer $smtpserver -Port $port -Encoding utf8 -Subject $mailsubject -Body $mailbody
}else{
   # PowerShell v2.0用処理。ポート番号指定除去と、Encoding指定方法変更
   Send-MailMessage -From $mailfrom -To $mailtoArray -SmtpServer $smtpserver -Encoding ([System.Text.Encoding]::UTF8) -Subject $mailsubject -Body $mailbody
}

え?

ISO-2022-JPでメール送らなくていいのかって?

いまどきUTF-8を受け取れない環境は論外なので気にしなくていいです。(iPhone/Androidの絵文字は基本Unicodeベースなので、送信されるメールはISO-2022-JPではありません)

AndroidのバックアップソフトHeliumでデスクトップアプリを使わずadbコマンドだけで行う方法

Androidのバックアップソフト「Helium」はAndroid標準のバックアップ/リストア機能を流用する形で実現している。

ただ、Heliumの機能を使うためにはパソコンにHelium Desktopアプリをインストールし、そこから何かを行わせる必要がある。
Helium Desktop Installer and Android App」を見ると、いまは、Chromeアプリ、Windowsアプリ、MacOSXアプリ、Linuxアプリ、がある模様。

で、Linuxの配布内容を見てみると、中身は、adbコマンドとシェルスクリプトのみ。
これなら、アプリを入れず、adbコマンドだけで実現できるのでは?と実験してみる

BASE=$(dirname $0)
pkg=$($BASE/adb shell pm path com.koushikdutta.backup)
# apparently pm path appends a carriage return which screws
# up the class name in dalvikvm invocation
pkg=$(echo $pkg | cut -d : -f 2 | sed s/\\r//g)
echo $pkg
$BASE/adb shell << EOF CLASSPATH=$pkg app_process /system/bin com.koushikdutta.shellproxy.ShellRunner2 $@ & exit EOF

(1)adbコマンドで、Heliumアプリ(com.koushikdutta.backup)がインストールされているパス名調査
(2)そのパス名をCLASSPATH環境変数に指定して、コマンド実行

という感じ。
私の環境では
(1) /data/app/com.koushikdutta.backup-1/base.apk
(2)「CLASSPATH=/data/app/com.koushikdutta.backup-1/base.apk app_process /system/bin com.koushikdutta.shellproxy.ShellRunner2」
ということなので、

「adb shell」でAndroid端末にshellで入り、「CLASSPATH=/data/app/com.koushikdutta.backup-1/base.apk app_process /system/bin com.koushikdutta.shellproxy.ShellRunner2」を実行することで、アプリインストールの代替とすることができた。

GOLE2のクラウドファウンディングが開始されるも変態度が激下がり

5月に「中華ベンダGOLE社のGOLE1というタッチパネル付きミニPC」という記事でGOLE1のクラウドファウンディングを紹介しました。
これは無事出荷されました。

で・・・6月にはGOLE2を企画してるよ、との発言があり、どうなるかな?と思っていたところ
ついに、クラウドファウンディングが開始されました。

GOLE2, The real Mini PC with FHD wide-angle camera
gole2-1

・タッチパネルを廃止
・TVの横に置いて使うことを想定
・カメラを装備
・Intel Z8350搭載のWindows10モデルと、Allwinner A64搭載のAndroidモデルの2つを用意
・2.5インチHDD/SSD内蔵可能
・日本語マニュアル付き

Androidモデル・・・とはいっても、正確にはAOSPベースの「Phonenix OS」を採用(JideのRemixOSと似たようなもんです)

価格は
・Phoenix OSモデル(Orange): $69(100個限定),$79(200個限定),$89(300個限定),$99
・Windows10モデル(White or Black): $114(50個限定), $124(100個限定),$134(200個限定)

うーーーーん・・・・
それほど・・・コレといって・・・

マイコンソフトのXHEAD-2(仮)とV-BridgeのクラウドファウンディングプロジェクトMUSES

マイコンソフトの「CEATEC JAPAN 2016出展内容」に、HDMI入力をISDB-Tで送信し、地デジTVで受信できる「XHEAD-2(仮)」が紹介されていた。

で、今日。
cnx-softwareの「V-Bridge Muses Digital TV Modulator Boards Let You Broadcast Your Own TV Channel for $199 and Up (Crowdfunding)」という記事で似たようなものが紹介されていた。

この製品はkickstarterでクラウドファウンディング中の「MUSES: The First Open Source Modulator Development Board」で、台湾のVATekの「VATEK VMB820XD ENMODERを利用して、HDMIを各種デジタルTVとして再送信するプロダクトとのこと。

内部的には下記の5種類のパーツに別れている。
・MUSES-β(本体ボード、日本の地デジ対応)
・MUSES-α(廉価版本体ボード、日本の地デジ非対応)
・Video board(ビデオ入力ボード、必須)
・RF Board(TVに出力するためのボード、必須)
・STM32 Parts(単品で操作するためのボード)

MUSES-αとβの違いは下記となっており、日本の地デジ向けTVで使うにはβの方が必須となる。
msues-1

組み合わせとして、「BASIC PACKAGE($199)」「STANDARD PACKAGE($399)」「TURNKY PACKAGE($599)」の3種類がある。
TURNKY PACKAGEに関しては15台限定で$559となっている。

msues-2
日本の地デジ向けTVで使うにはMUSES-βが必要となるので「STANDARD PACKAGE($399)」「TURNKY PACKAGE($599)」のどちらかが必要となる。

2017年1月予定、とのことですが、はたしてどうなることか???

2.5G/5Gbpsのイーサネット規格IEEE 802.3bz/mGig/NBASE-Tで買える製品は何か?

2.5Gbps/5GbpsでCAT5eケーブルを使用するイーサネット規格がIEEE 802.3bzとして標準化された。

以前より「NBASE-T Alliance」にて「NBASE-T」という名称、またCisco社では「mGig(Multigigabit Ethernet)」という名称で製品化が進んでいたものではある。

1月に記事を書いた時は気がつかなかったのですが「玄人志向の10GBase-T NIC GbEX-PCIEはTehuti Networks TN9510相当品」って、NBASE-T対応製品だったんですね。

他にどんな製品があるのかな?と調べてみた
NBASE-T Alliance加盟各社の製品一覧
「Type of Product:System-level Product」で、「Availability:Shipping」となっているものが普通に購入できる製品、という意味になる。

スイッチ

メーカ 製品名 種別 uplink系 downlink系
SFP+ 10G 5G 2.5G 1G 10G 5G 2.5G 1G
Cisco Meraki MS350-24X L3スイッチ 4 8 なし 16
Cisco Catalyst 3560-CXシリーズ L3スイッチ 2 6 なし 8 or 12
Cisco Catalyst 4500シリーズ L3スイッチ 使用するモジュール次第
Cisco Catalyst 3850シリーズ L3スイッチ 3850-12X48Uなら12ポート分、3850-24XUなら24ポート分対応
Brocade ICX 7450シリーズ L3スイッチ RJ-45コネクタの一部で10Gと2.5Gに対応してるらしいがよく分からない
Aruba Aruba 3810シリーズ L3スイッチ たぶん、Aruba 3810M 40G 8 HPE Smart Rate
PoE+ 1-slot Switch (JL076A) だけが8ポート分10G/5G/2.5G/1G対応
Aruba Aruba 5400Rシリーズ L3スイッチ 使用するモジュール次第
Cisco Meraki MR53 無線AP なし あり なし
NETGEAR ProSAFE M4200 無線AP 2 なし 8 なし
Cisco Cisco Aironet 3800シリーズ 無線AP なし 2 なし
Aruba Aruba 330シリーズ 無線AP なし あり なし

NIC
・TEHUTI Network「TN9510: 5-speed 10GBase-T / NBASE-T」PCIeの10G/5G/2.5G/1Gネットワークインタフェース
・Promise「SANLINIK3 T1」40GbpsのThunderbolt3インタフェースを2.5Gに変換するアダプタ

Intelからは「Intel Ethernet Controller X550 family」というチップのみで、NICはまだリリースされていない模様


2016/10/06追記

GIGABYTEからIntel X550-AT搭載の1ポートモデル「CLN4121 (rev. 1.0)」とIntel X550-AT2搭載の2ポートモデル「CLN4222 (rev. 1.0)」が出る模様。

GIGABYTEのNIC製品ページでは特に明記されていませんが、使用しているIntel X550-AT/X550-AT2についての詳細が記載されている「Intel Ethernet Controller X550 Specification Update」にはNBASE-T対応についての記述が・・・

2. NBASE-T Speed Advertisement

NBASE-T speed advertisement (2.5 GbE/5 GbE) is disabled by default in the X550 NVM. An NBASE-T
enabled driver should be used to link at NBASE-T speeds.
Linux driver version 4.3.9 is currently the only supported software solution for NBASE-T.
For future planned enhancements, contact your Intel representative.

おや・・・標準では無効にされているんですか・・・
今後に期待・・・なんですかね?