Dưới đây là một đoạn trích cho helper SMTP của tôi, tôi sử dụng hàng ngày ....
public bool SendMail(string strTo, string strFrom, string strCc, string strBcc, string strBody, string strSubject)
{
bool isComplete = true;
SmtpClient smtpClient = new SmtpClient();
MailMessage message = new MailMessage();
try
{
//Default port will be 25
smtpClient.Port = 25;
message.From = new MailAddress(smtpEmailSource);
message.To.Add(strTo);
message.Subject = strSubject;
if (strCc != "") { message.Bcc.Add(new MailAddress(strCc)); }
if (strBcc != "") { message.Bcc.Add(new MailAddress(strBcc)); }
message.IsBodyHtml = true;
string html = strBody; //I usually use .HTML files with tags (e.g. {firstName}) I replace with content. This allows me to edit the emails in VS by opening a .HTML file and it's easy to do string replacements.
AlternateView htmlView = AlternateView.CreateAlternateViewFromString(html, new ContentType("text/html"));
message.AlternateViews.Add(htmlView);
// Send SMTP mail
smtpClient.Send(message);
}
catch
{
isComplete = false;
}
return isComplete;
}
[UPDATE]
Các điểm chính như tôi ban đầu rời đi ...
IsBodyHtml nói rằng thư của bạn được định dạng HTML. Nếu bạn chỉ gửi một lượt xem HTML, đây là tất cả những gì bạn cần. AlternateView được sử dụng để lưu trữ HTML của tôi, điều này là không cần thiết để gửi một tin nhắn HTML nhưng nó được yêu cầu nếu bạn muốn gửi một tin nhắn bao gồm HTML và Plain Text, trong trường hợp người nhận không thể hiển thị HTML.
Tôi lấy ra Plainview của tôi ở trên vì vậy đây là không rõ ràng, xin lỗi ...
Mấu chốt ở đây là nếu bạn muốn gửi một thông điệp được định dạng HTML bạn cần phải sử dụng IsBodyHtml = true (mặc định là sai) để nội dung của bạn được hiển thị dưới dạng HTML.
Đó thực sự là những gì tôi làm. Tôi chỉ tò mò điều gì sẽ xảy ra nếu tôi gán HTML cho cơ thể với IsBodyHtml được đặt thành true thay vì sử dụng AlternateView. –
Tôi giả sử thuộc tính Nội dung chỉ là một phím tắt cho 'AlternateView' và giữa' IsBodyHTML true/false' bạn đang chỉ định rằng 'Nội dung' là một trong hai văn bản thuần túy hoặc HTML. Nếu bạn muốn chỉ gửi một nội dung có định dạng RTF, bạn không thể sử dụng thuộc tính Nội dung, bạn phải tạo một lần xem thay thế để bạn có thể chỉ định loại nội dung cho RTF. –