不管什麼系統,只要需要通知使用者基本上都是使用email(電子郵件)方式通知,因此寄送email基本上是大部分系統都會需要的功能。
雖然正式環境一定會有mail server給我們使用,但是當我們在開發階段的時候,有時候需要測試寄送出來的mail內容是不是正確、有沒有跑版等問題,這個時候有一個測試用的mail server變得非常重要。
以前最常見應該就是借用gmail的mail server來測試發信,不過那個設定有些步奏,並且gmail也有做出一些限制,因此放過你的gmail吧,來看看有什麼工具可以讓我們測試email寄送。
關鍵字:測試mail server、測試smtp、mailtrap、smtp4dev、papercut、直接寫道檔案系統
比較表 - TL;DR
這邊將會像大家介紹4個工具:
- MailTrap
- Smtp4Dev
- papercut
- 直接寫到檔案
MailTrap | Smtp4dev | papercut | 直接寫到檔案 | |
---|---|---|---|---|
是否需要連網? | ✔ | ✖ | ✖ | ✖ |
是否需要執行程式? | ✖ | ✔ | ✔ | ✖ |
是否能直接看到html呈現結果? | ✔ | ✖ | ✔ | ✖ |
是否提供轉寄功能? | ✖(付費版有) | ✖ | ✔ | ✖ |
檢查html和css是否合法和垃圾郵件分數? | ✔ | ✖ | ✖ | ✖ |
運作機制 | Online服務提供測試的smtp server | 建立local samtp server | 建立local samtp server | 把寄送mail內容寫到檔案 |
一般來說,我的使用順序會是:MailTrap > smtp4dev > 直接寫到檔案 > papercut
Mailtrap能夠直接看到html內容,並且可以檢查html和css是否合法,最後能夠檢查出spam(垃圾郵件)指數。
不過有時候開發沒有網路的話,那麼就沒辦法用mailtrap,這個時候會改成使用smtp4dev只是用來收mail。
如果是在正式機器需要測試mail寄送,這個時候就會使用直接寫到檔案的方式來達到 - 因為在正式機器不一定能夠架設一個暫時的smtp server,因此smtp4dev無法使用。
只有當沒有網路並且要測試檢視html內容的時候才會考慮使用papercut。
MailTrap
Mailtrap是一個網路的服務,最主要的好處是能夠直接看到html內容並且能夠檢查html和vss是否都合法,最後裡面也有一個檢查spam指數。
準備使用
- 服務網址:https://mailtrap.io/
- 免費版提供了一個mail box裡面最多可以放50封email。如果需要其他功能例如收到的mail轉寄等功能可以參考不同費用的差異:https://mailtrap.io/pricing
基本上和一般註冊服務沒什麼兩樣,註冊完了之後,可以直接建立一個inbox:
建立出來了之後,可以直接點進去會看到:
- smtp的host
- smtp的帳號
- smtp的密碼
- 可以切換到C#
- 直接看到如何使用的範例程式碼
- 可以直接重新產生帳號和密碼
有了這些資訊之後,可以再App.config
裡面設定成為:
<system.net>
<mailSettings>
<smtp from="test@test.com">
<network enableSsl="true" userName="{你的帳號}" password="{你的密碼}"
host="smtp.mailtrap.io"/>
</smtp>
</mailSettings>
</system.net>
這邊把帳號和密碼改成你帳號裡面的值。 測試結果
在inbox裡面會多出一封mail,點下去之後:
切換到Analysis
頁簽可以看到:
- Spam Score - 被歸到垃圾郵件的可能性分數 - 以我們這個為例子看起來還好
- 右邊有詳細每一個分數說明,並且如果對於每一個規則有疑問可以點下去會到wikpedia看到更多資訊
- 下面還會分析寄送來源的domain是不是屬於被黑名單
切換到Check Html
的頁簽,可以看到檢查email的html和css是否符合規範。
以上就是mailtrap的使用方式,和特色的部分,接下來看看smtp4dev。
smtp4dev
這個工具是一個windows程式,開啟之後會建立一個smtp server在指定的port,因此mail寄送到這個工具裡面。
準備環境
- github官網:https://github.com/rnwood/smtp4dev
- 直接下載:smtp4dev 2.0.10
- 目前版本:v 2.0.10
- 檔案大小:約444 kb
下載好之後,直接run起來,一開始會有一個防火墻規則要開通:
預設聽的是port 25,假設要改可以透過options
裡面的server
頁簽,然後修改port numbers
調整App.config
如下:
<system.net>
<mailSettings>
<smtp from="test@test.com">
<network host="localhost"/>
</smtp>
</mailSettings>
</system.net>
測試結果
用和上一封一樣的mail內容,寄送出去之後,會看到清單會有一筆資料,可以點下Inspect
來看內容:
無法看到html的render內容,如果要看到,需要有一個mail的工具(例如outlook或者thunderbird),然後按下View
就可以。
smtp4dev和mailtrap比起來的好處是不需要網路,但是看html內容不方便。如果需要看html的呈現結果,但是又不想聯網,可以使用papercut。
papercut
papercut和smtp4dev是同一種類型的軟體,都是建立一個stmp的server。
papercut比smtp4dev的功能還來得豐富,例如轉寄出去等,不過這邊比較關注的是html呈現的部分。
準備環境
程式小檔案
- Github官網:https://github.com/ChangemakerStudios/Papercut
- 直接下載:Papercut 5.0.9
- 目前版本:v5.0.9
- 檔案大小:約8.9MB
和smtp4dev一樣,啟動的時候會需要開啟防火墻:
預設port是25,如果要改可以透過option
裡面的port來調整
測試結果
mail內容和設定可以和smtp4dev一樣,因此可以不用改,直接把程式run起來即可。
執行出來的結果如下:
可以看到html內容會直接呈現出來。papercut和smtp4dev除了html的部分還有就是轉寄(forward)的功能 - 這個轉寄功能還可以透過設定規則(rule)的方式來自動接到特定mail的時候自動轉寄出去。
一般來說papercut是當沒有網路的時候,要看email的html呈現才會使用。
有時候在正式機器需要測試寄送mail的內容,但是又沒辦法執行程式建立暫時的smtp server,這個時候就可以使用把mail寫到檔案的方式。
直接寫到檔案
如果沒有網路,並且沒有上面提到的兩個程式(或者因為權限的關係無法執行起來),那麼就可以用直接寫道檔案的方式。
準備環境
這個方式不需要安裝或者註冊什麼,只需要調整設定App.config
即可:
<system.net>
<mailSettings>
<smtp from="test@test.com" deliveryMethod="SpecifiedPickupDirectory">
<specifiedPickupDirectory pickupDirectoryLocation="d:\temp\mail" />
</smtp>
</mailSettings>
</system.net>
這邊主要設定會把mail內容寫到資料夾:d:\temp\mail
下面。
測試結果
直接把測試軟體run起來寄送email,會在資料夾d:\temp\mail
多出一個guid名稱的檔案:
這個方式非常簡單,不需要任何服務或者任何軟體,隨時都可以設定,因此非常適合比較無法控制的環境測試的時候使用。
結語
寄送mail是個很常見的功能,因此在開發或者測試的時候能夠測試寄送mail變得很重要。
希望透過這篇能夠讓未來要測試寄送mail的時候變得更加方便和容易。