WindowsでSwaksを使ってメール送信

# TL;DL
OCIのMail Deriveryなどで、メールの送信テストをする際、
[Swaks](https://github.com/jetmore/swaks)というPerlのスクリプトを使えばハッピーだ！ということを知りました。

実際、[Linuxサーバの上で実行](https://qiita.com/viva1000/private/29d6dccd19904461c1aa)してみたら、思いの他にデバックで役に立ったので
いろいろなところでお勧めしよう思い。。。
Perlが使えるならWindows上でも動くよね？と、いうところで検証をしてみました。
（もちろん、使えたのでその手順を紹介しますー）

## テストした環境
- サーバOS：
  Windwos 2019 Standard（Oracle Cloudのコンピュートインスタンス）
- Perl環境
  Swaksでサポートされてるもの & Portable版（テスト完了後、削除したい）

# Perlのインストール
- 今回、Strawberry PerlというPerlを使います
  - レジストリを汚さないPortable版が存在するし、
  - Swaksの[公式サイト](https://jetmore.org/john/code/swaks/installation.html)で、紹介がされていたので。
  > Keep in mind that a working Perl will need to be installed (Strawberry Perl and ActiveState Perl both work)
- ダウンロードサイト：https://strawberryperl.com/releases.html
  strawberry-perl-5.32.1.1-64bit-portable.zip
  → インストールは、デスクトップとかに解凍するだけ。
  　アンインストールも、これを丸っと削除するだけ。

# Perlを起動（動作確認）
- portableshell.bat 実行
```
----------------------------------------------
 Welcome to Strawberry Perl Portable Edition!
 * URL - http://www.strawberryperl.com/
 * see README.TXT for more info
----------------------------------------------
Perl executable: C:\Users\opc\Desktop\strawberry-perl-5.32.1.1-64bit-portable\perl\bin\perl.exe
Perl version   : 5.32.1 / MSWin32-x64-multi-thread
```

# Swaksスクリプトをゲット
```
C:\Users\opc\Desktop\strawberry-perl-5.32.1.1-64bit-portable>curl "http://www.jetmore.org/john/code/swaks/files/swaks-20130209.0/swaks" > ./swaks.pl
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  149k  100  149k    0     0   141k      0  0:00:01  0:00:01 --:--:--  141k
```

# Swaksでメール送信を実行
ワンライナー。長いけど。
```
perl swaks.pl -4 -tls --pipeline \^
  --server smtp.email.ap-tokyo-1.oci.oraclecloud.com --port 587 \^
  --auth-user ocid1.user.oc1..aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@ocid1.tenancy.oc1..aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.wm.com \^
  --auth-password "XXXXXXXXXXXXXXXXXXXX" \^
  --from no-reply@sub.hogegegege.net \^
  --to 宛先のメアド \^
  --header "Subject: =?UTF-8?B?44CQ44OG44K544OI44CR?= from OCI(Email Delivery)!" \^
  --body "email message... TEST\nqwerty\n\n."
```

各オプションで指定する**内容**は、[Linux上で実行するとき](https://qiita.com/viva1000/private/29d6dccd19904461c1aa#送信テスト)と一緒です。
同じスクリプトを実行するので、当たり前と言っちゃ当たり前ですがw

ただ、OSシェルの機能差分として、-4(IPv4指定)が必要だったり、
クウォートの違い（シングル or ダブル）とかもあるので、気をつけませう。
- 参考：Linux上でSwaksを実行する場合のコマンドのサンプルは[こちら](https://qiita.com/viva1000/private/29d6dccd19904461c1aa#送信テスト)。

---

## 【蛇足】Windowsファイアウォール
メールが送信できない場合は、Windowsファイアウォールなどを疑ってみましょう
<details><summary>Windowsファイアウォールの状態確認</summary>

```
PS C:\Windows\system32> netsh advfirewall show allprofiles state
Domain Profile Settings:
----------------------------------------------------------------------
State                                 ON

Private Profile Settings:
----------------------------------------------------------------------
State                                 ON

Public Profile Settings:
----------------------------------------------------------------------
State                                 ON
Ok.
```
</details>


<details><summary>Windowsファイアウォールの無効化</summary>

```
PS C:\Windows\system32> netsh advfirewall set allprofiles state off
```
</details>

---
# さいごに。
Perlのお作法的によろしくない用法を紹介してしまっているかもしれません。
気になる記載があれば、コメントで教えてくださいー