自分用めも。
メールを手動で送る実験をしようと思い立ったものの、telnetはインストールしないと使えなかったので回避策としてPowerShellを使用してメール送信をしてみました。
使用するもの
- メールアドレス
- PowerShell
実際のコード
Send-MailMessage `
-from 'from@mail.com' `
-to 'to@mail.com' `
-subject 'Subject' `
-body 'body' `
-smtpServer 'xxx.xxx.xxx.xxx'
認証が必要ないメールアドレスからメールを送信したい場合は必要な設定はこれだけ!
上のままだと日本語を送信する場合文字化けするから、日本語を使いたい場合は変換が必要。
上記以外で使用可能な引数を知りたい場合は以下ページを参照。
Send-MailMessage コマンドレットは、PowerShell 内から電子メール メッセージを送信します。 簡易メール転送プロトコル (SMTP) サ…
learn.microsoft.com
認証を通してみる
上記のコードだとメールサーバから認証を求められた場合に対応できません。
認証が必要な場合はパスワードをSecureStringにして認証(Credential)を通すとかの手順が必要になります。
$password = ConvertTo-SecureString "パスワードを記載" -AsPlainText -Force;
$credential = New-Object System.Management.Automation.PSCredential "ユーザ名を記載", $password;
こんな感じで認証を通して、Send-MailMessageの引数-Credentialに作成した$credentialを渡せば認証完了です。
日本語でメールを送れるようにしてみる
Send-MailMessageの引数-Encodingに文字型を渡すだけです。(例:UTF8)
ちなみに他サイトで見かけた『[System.Text.Encoding]::UTF8』と『UTF8』ではBOMの有無に違いがあるので使用の際は気を付けましょう。([System.Text.Encoding]::UTF8の挙動についてはこちらの記事で検証しています。)