平時很常需要開發「寄送 Email」的功能,如果每次都需要使用實際的 Email Server 發送郵件,很可能在設定 Email Server 的階段就花費非長久的時間(因為各家的 Email Server 設定不同),而且也可能每次測試都要再發送好幾封,導致一直收到無用的信件。這時候就可以使用 smtp4dev 這樣的測試工具,在本機建立虛擬的 Email Server,直接在本機網頁就可以查看是否有收到 Email 、內容是否符合預期。
網頁:
要執行也很簡單:
網頁:
這裡使用 C# 的 MailKit 套件示範寄送 Email。
之前筆者有寫過一篇: .NET 7 使用 MailKit 寄送 email 教學 ,把程式碼抄過來就可以了寄送 Email 了:
安裝套件:
程式碼:
上面大多可以隨便填入,唯一要注意的就是 host 是 localhost 或是本機的 ip ,而 port 除非使用 docker 部署有換過,不然預設就是 25 ,其他的寄信者、密碼等都不會驗證(畢竟只是測試服務)
再回到網頁上面就會看到收到一封 email 了!
參考資料:
GitHub - rnwood/smtp4dev
安裝
透過 docker 執行
使用 docker 非常簡單就可以建立一個測試服務,這裡的 25 就是寄送 email 的 port, 3000 port 就是網頁
docker run --name smtp4dev -d -p 25:25 -p 3000:80 rnwood/smtp4dev
網頁:
http://localhost:3000/
透過 dotnet 執行
筆者日常都是使用 .NET 開發,smtp4dev 這個套件也是使用 .NET 寫的,只要安裝了 .NET 8 後就可以很簡單的透過 dotnet tool 指令安裝 smtp4dev 工具:
dotnet tool install -g Rnwood.Smtp4dev
要執行也很簡單:
smtp4dev
網頁:
http://localhost:5000/
發送 Email 測試
開啟網頁後內容如下:這裡使用 C# 的 MailKit 套件示範寄送 Email。
之前筆者有寫過一篇: .NET 7 使用 MailKit 寄送 email 教學 ,把程式碼抄過來就可以了寄送 Email 了:
安裝套件:
dotnet add package MailKit
程式碼:
string host = "localhost"; // 送信郵件主機
int port = 25; // 送信郵件主機連接埠
string account = "ruyut_mail_server@gmail.com"; // 帳號
string password = "ruyut_mail_server123"; // 密碼
string mailServerName = "Server"; // 寄信者名稱
string mailServerAddress = "ruyut_mail_server@gmail.com"; // 寄送者信箱
string targetAddress = "a@ruyut.com"; // 目標信箱
string subject = "測試信件"; // 信件主旨
string body = "這是一封測試信件"; // 信件內容
MimeMessage message = new();
message.From.Add(new MailboxAddress(mailServerName, mailServerAddress));
message.To.Add(MailboxAddress.Parse(targetAddress));
message.Subject = subject;
message.Body = new TextPart("html")
{
Text = body
};
using SmtpClient client = new();
client.Connect(host, port, false);
client.Authenticate(account, password);
client.Send(message);
client.Disconnect(true)
上面大多可以隨便填入,唯一要注意的就是 host 是 localhost 或是本機的 ip ,而 port 除非使用 docker 部署有換過,不然預設就是 25 ,其他的寄信者、密碼等都不會驗證(畢竟只是測試服務)
再回到網頁上面就會看到收到一封 email 了!
參考資料:
GitHub - rnwood/smtp4dev
留言
張貼留言
如果有任何問題、建議、想說的話或文章題目推薦,都歡迎留言或來信: a@ruyut.com