アーキテクチャ
System.Net.Mail.SmtpClientを使った mail クライアントです。
使い方(ダウンロードとインストール)
Microsoft .NET Framework2.0/4.0 で作った BlatJ.exe(sendmailコマンド) からsendmail.net.lzhをダウンロードして、ZoneIDを削除して、解凍すれば、使える。
- .NET2.0でコンパイルしたのが、sendmail.net2.exe
- .NET4.0でコンパイルしたのが、sendmail.net4.exe
なので、
- .NET Framework2.0 ランタイムで動作するのが sendmail.net2.exe
- .NET Framework4.0 ランタイムで動作するのが sendmail.net4.exe
- .NET Framework4.5 ランタイムで動作するのが sendmail.net4.exe
となる。
usage
C:\>sendmail.net4.exe
sendmail.net4.exe ver 2.1.0.0
created by active@window.goukaku.com
usage : sendmail.net4.exe <<option>>
Mail Body is Standard Input.
OPTIONS
-SmtpServer <<SMTP Server Address>> (must)
-SmtpServerPort <<SMTP Server Port>> (Default:25)
-Subject <<Subject>> (must)
-Fromaddress <<From Mail Address>> (must)
-ToAddress <<To Mail Address>>
-CcAddress <<Cc Mail Address>>
-BccAddress <<Bcc Mail Address>>
-ReplyToAddress <<ReplyTo Mail Address>>
-ToList <<To Mail Address List File>>
-CcList <<Cc Mail Address List File>>
-BccList <<Bcc Mail Address List File>>
-AttachFile <<Attach File>>
-CharSet <<Character Set>>
-User <<username>>
-Pass <<password>>
-SSL
-CheckCert
-OldMode {only .NET4.5 ... Old MailFormat (if set charset this option need)}
Error: No Set MailServer
必須オプション
メール本文は、標準入力から与える。
必要なオプションは、以下
- -SmtpServer → メール配送を委ねる SMTP サーバ
- -Subject →題名
- -Fromaddress → 送信元
- -ToAddress or -ToList →あて先
SSL
-SSL オプションで、STARTTLS対応する。
System.Net.Mail.SmtpClientの制限で、SMTP over SSL ではなくて、STARTTLSだけのようだ。
SMTP over SSL に対応したい場合は、stoneとかsTunnel などを経路上に挟めばいいでしょう。
または、StreamRealy.jar でも StreamRelay.Net.exe でもSSLクライアントになれるよ。
↓のあたりを参照のこと
- stone/stunnel の代替としての StreamRelay.NET.exe (SSLクライアント編)
- stone/stunnel の代替としての StreamRelay.jar (SSLクライアント編)
サーバ側のSSL証明書の確認
基本的に検証しないが、-CheckCert オプションで検証させることができる(検証不備でエラーが発生する)。
「デフォルトセキュア」ではないけど、まぁ、いいでしょ。
クライアント側のSSL証明書
検証環境はないけど、プロパティがあるので、「-CertFile」と「-CertPassword」で対応した(ver2.2.0.0)
認証
SMTP認証には、-User と -Passを与えればよいが、System.Net.Mail.SmtpClientの制限で、AUTH LOGINのみに対応しているようだ。
文字コード(既定)
- .NET2.0 → ISO-2022-JP
- .NET4.0 → ISO-2022-JP
- .NET4.5 → UTF-8
文字コード(古きよき伝統的スタイル)
基本的に、古きよき伝統的なスタイルで送信する。(.NET2.0/.NET4.0)
ただし、.NET4.5で動作している時は、既定はUTF-8な8bitなメールとしたので、古きよき伝統的スタイルで送信したい場合は「-CharSet iso-2022-jp -OldMode」とすると、7bitな古きよき伝統的スタイルのメールを送信する。
.NET Framework 4.5 での仕様変更への追随
.NET Framework 4.5 以降では、4.0 とは古きよき伝統的スタイルでの仕様変更があったようで、4.5未満と4.5以降で、処理を分けるようにしている。
StreamRelay.NET.exe(mailtoスキーム)
機能的には劣るけどStreamRelay.NET.exeもURIなパスに対応してみた。
curl のような wget のようなウェブクライアントの代替としてのStreamRelay.NET.exe