PowerShellでメールを送る

レンタルサーバーに付属している一般的なメールサーバー経由でメールを送る方法と、Gmail経由でメールを送る方法の2通りを調べてみました。

ValueDomainのCoreServer経由でメールを送る

vsendmail.ps1
#メールサーバー設定
$mailsv = New-Object Net.Mail.SmtpClient
$mailsv.Host = "b12345.coreserver.jp"
$mailsv.Port = 587
$mailsv.EnableSsl = $true

#POP Before SMTP認証設定
$mailsv.Credentials = New-Object Net.NetworkCredential
$mailsv.Credentials.UserName = "lil@b12345.coreserver.jp"
$mailsv.Credentials.password = "qwerty123"

#送信内容
$adr_from = "lil@b12345.coreserver.jp"
$adr_to   = "pcm@gmail.com"
$title    = "てすと"
$body     = "はろはろー!テストだよー"

#メール送信
$mailsv.send($adr_from, $adr_to, $title, $body)

Gmail経由でメールを送る

普段使いのパスワードをたとえ暗号化して、送信する直前に復原したとしても、プログラム内に記述したり変数に保持するのはセキュリティ上問題があります。
以下のURLへアクセスして、アプリ固有のパスワードを取得してスクリプト内で使います。

Sign in - Google Accounts
gsendmail.ps1
#メールサーバー設定
$mailsv = New-Object Net.Mail.SmtpClient
$mailsv.Host = "smtp.gmail.com"
$mailsv.Port = 587
$mailsv.EnableSsl = $true

#POP Before SMTP認証設定
#事前準備
# https://myaccount.google.com/apppasswords
#にアクセスして、2段階認証が使用できない場合のアプリパスワードを取得しておく
$mailsv.Credentials = New-Object Net.NetworkCredential
#認証用Gmailアカウント
$mailsv.Credentials.UserName = "google@gmail.com"
#取得したアプリパスワード
$mailsv.Credentials.password = "E4&ub%|T&s(v~B8efGrvs)Wtzfm/aZmt"

#送信内容
$adr_from = "goolge@gmail.com"
$adr_to   = "ntt@docomo.ne.jp"

$title    = "てすと"
$body     = "はろはろー!テストだよー"

#メール送信
$mailsv.send($adr_from, $adr_to, $title, $body)

参考にしたサイト

PowerShellでメール送信 - Qiita
##はじめにデータベースから取得したCSVデータをメールで送信する案件が発生した。CSVを暗号化zip圧縮にする必要があるが取り敢えずは、zipファイルをメールに添付して送信するスクリプトを作…
Gmail(SMTP)経由でメール送信する - Qiita
記事の主旨GmailのSMTP利用する際には、Googleアカウントのセキュリティ設定を忘れず、済ましておいてくださいね「安全性の低いアプリの許可」に逃げず、「二段階認証/アプリパスワード」を…

コメント

タイトルとURLをコピーしました