首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> ASP.NET 基礎 >> ASP.NET 基礎

ASP.NET Web Pages WebMail 郵件發送完整參考與實作指南

     編輯:ASP.NET 基礎

ASP.NET Web Pages - WebMail 物件完整參考與 SMTP 設定實戰


WebMail 物件封裝 SMTP 協定,提供簡潔 API 讓 Web Pages 輕鬆發送電子郵件,支援 SSL、附件、HTML 郵件、抄送等企業級功能。


WebMail 物件核心屬性

屬性型別描述必要性
SmtpServerStringSMTP 伺服器主機名稱 (如 smtp.gmail.com)必要
SmtpPortIntSMTP 連接埠 (標準 25、SSL 465、TLS 587)必要
EnableSslBoolean啟用 SSL/TLS 加密傳輸建議 true
UserNameStringSMTP 驗證帳號 (通常為完整 Email)必要
PasswordStringSMTP 驗證密碼 (或應用程式專用密碼)必要
FromString寄件人顯示 Email (通常同 UserName)必要

Send() 方法完整參數說明

參數型別必要描述
toString是收件人 Email,多筆以分號 ; 分隔
subjectString是郵件主旨
bodyString是郵件內文
fromString否覆蓋預設寄件人
ccString否副本收件人,分號分隔
filesToAttachCollection否附件檔案路徑集合
isBodyHtmlBoolean否true 為 HTML 格式內文,false 為純文字 (預設)
additionalHeadersCollection否額外郵件標頭 (如 Reply-To、X-Priority)

技術規格

項目值
類別完整名稱System.Web.Helpers.WebMail
命名空間System.Web.Helpers
組件System.Web.Helpers.dll

WebMail 初始化最佳實務:_AppStart.cshtml

在網站根目錄建立 _AppStart.cshtml (若不存在),應用程式啟動時自動執行:

@{
 WebMail.SmtpServer = "smtp.example.com";
 WebMail.SmtpPort = 587;              // TLS 標準埠
 WebMail.EnableSsl = true;            // 強制加密
 WebMail.UserName = "noreply@example.com";
 WebMail.Password = "your-app-password"; // 使用應用程式專用密碼
 WebMail.From = "noreply@example.com";
}

關鍵設定說明:

  • SmtpServer:郵件服務商提供 (Gmail: smtp.gmail.com, Outlook: smtp.office365.com, SendGrid: smtp.sendgrid.net)
  • Port 587 + EnableSsl=true:現代標準 TLS 加密模式 (STARTTLS)
  • Port 465 + EnableSsl=true**:舊式 SSL 隱含加密模式
  • Password**:Gmail/Outlook 需啟用「應用程式密碼」而非登入密碼
  • From**:需通過 SPF/DKIM/DMARC 驗證的網域郵箱,提高送達率

注意: _AppStart 中初始化屬性後,呼叫 WebMail.Send() 前無需重複設定,除非需動態覆蓋特定郵件參數。


常見 SMTP 服務商設定速查

服務商SMTP ServerPortSSL/TLS備註
Gmailsmtp.gmail.com587STARTTLS需啟用 2FA + 應用程式密碼
Outlook/Office365smtp.office365.com587STARTTLS支援現代驗證 OAuth2
SendGridsmtp.sendgrid.net587STARTTLSAPI Key 作為密碼
Mailgunsmtp.mailgun.org587STARTTLSAPI Key 作為密碼
自架 Postfixmail.yourdomain.com587/25STARTTLS需正確設定 SPF/DKIM/DMARC

進階用法:非同步發送與錯誤處理

@functions {
 public static async Task<bool> SendAsync(string to, string subject, string body, bool isHtml = true) {
 try {
 WebMail.Send(to: to, subject: subject, body: body, isBodyHtml: isHtml);
 return true;
 } catch (Exception ex) {
 // 記錄日誌: Log.Error(ex, "Email send failed to {To}", to);
 return false;
 }
 }
}

生產環境建議:使用背景工作服務 (Hangfire、Quartz、IHostedService) 佇列發送,避免封鎖 HTTP 要求執行緒;整合 Serilog/NLog 記錄發送狀態;實作重試機制與死信佇列。


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved