網上常見代碼多缺少身份驗證,導致發送失敗。本文提供基於 System.Net.Mail 的完整發送模板,含 Gmail SSL 配置、異常處理、編碼設置等生產級細節。
MailMessage msg = new MailMessage();
msg.From = "writer@sadf.com";
msg.To = "geter@dff.com";
msg.Subject = "測試";
msg.Body = "內容";
SmtpMail.SmtpServer = "smtp.xxx.com";
SmtpMail.Send(msg); // 無身份驗證,必失敗
string mailContent = "郵件內容";
MailMessage msg = new MailMessage();
msg.To.Add("to@gmail.com");
msg.From = new MailAddress("from@gmail.com", "發件人", Encoding.UTF8);
msg.Subject = "測試郵件";
msg.SubjectEncoding = Encoding.UTF8;
msg.Body = mailContent;
msg.BodyEncoding = Encoding.UTF8;
msg.IsBodyHtml = true;
msg.Priority = MailPriority.High;
SmtpClient client = new SmtpClient();
client.Credentials = new NetworkCredential("account@gmail.com", "password");
client.Port = 587;
client.Host = "smtp.gmail.com";
client.EnableSsl = true;
try
{
client.Send(msg);
MessageBox.Show("發送成功");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "發送失敗");
}
System.Net.Mail 命名空間,System.Web.Mail 已棄用。msg.Attachments.Add(new Attachment(path));client.SendAsync(msg, userState); 配合 SendCompleted 事件。