前陣子因為專案要求,有發送郵件的需求。再加上公司政策,若能使用雲端服務,會盡量以雲端服務為優先考量,而不再是傳統的地端,或者自行維護服務的模式。
也因此這個專案的郵件發送,就採了 AWS SES 服務,把維護郵件服務的工作全部轉移到 AWS。
當我從 SES 取得了一切郵件發送的必要資訊,測試也沒有問題之後,就將相關資訊轉交給相關設定人員。但在專案環境內,卻無法正常地發出郵件。相關人員懷疑可能是我們在 AWS 的網路或防火牆規則或其他部份影響,而造成這樣的問題。
經驗告訴我,應該不是網路或防火牆規則的問題,但為了要讓相關人員了解郵件發送的必要資訊是正確的,且在專案環境內也是正常的,所以就必須要做點測試。
不過,專案環境有 ISO 認證的相關問題,再特地裝軟體會比較麻煩一點。也因此才 Google 到原來在 PowerShell 有類似功能可以做相關測試。
先直接看 PowerShell 的寫法
Send-MailMessage `
-from someone@from-server `
-to someone@to-server `
-subject "this is subject" `
-body "this is mail body" `
-smtpserver the-smtp.server `
-port 587 `
-credential someone@from-server `
-usessl
先說明一下 ` 這個符號,用法跟 Linux 的 \ 意思一樣,是可以把很長的 Command 分成多行。
比較要留意的是 credential 這個參數,它指的是登入 SMTP 伺服器的帳號。以 Gmail 為例,這裡的設定會是完整的 gmail 信箱,具體情況則視郵件伺服器而定。
至於密碼的部份,不建議也沒辦法在 command 裡加入。不過,也不用擔心,因為在我們按下 Enter 之後,會有詢問密碼的視窗讓我們輸入。
雖然,最後定位出問題不在於網路或防火牆規則導致信件無法寄發。若在無法安裝軟體的情況下,又有寄送郵件的需求,PowerShell 的 Send-MailMessage 確實可以幫上忙。