我正在從web表單收集用戶的某些用戶信息並通過電子郵件發送確認。我正在嘗試使用以下方法發送HTML電子郵件,因爲它可以輕鬆管理基於HTML的電子郵件。基於HTML的電子郵件在asp.net web表單中無法正常工作
https://gist.github.com/1668751
我做的代碼必要的修改,但它無法正常工作。我讀了其他相關文章,使其工作,但我做錯了什麼。
下面的代碼行生成錯誤The replacements dictionary must contain only strings.
MailMessage msgHtml = mailDef.CreateMailMessage(to, replacements, MessageBody, new System.Web.UI.Control());
我已經做了很多改變的代碼,但它似乎爲我工作。我將不勝感激幫助使此代碼工作。
如果我評論上述代碼行與其他一些更改,然後我可以發送電子郵件,但我不能代替令牌。任何簡單的方法來取代令牌也是受歡迎的。
下面是完整代碼我使用現在
String to, subject, Name;
subject = "Booking Confirmation";
Name = txtName.text;
ListDictionary replacements = new ListDictionary();
replacements.Add("<%Name%>", Name);
replacements.Add("<%Email%>", objVR.Email);
replacements.Add("<%CompanyName%>", objVR.CompanyName);
replacements.Add("<%BookingDate%>", objVR.BookingDate);
replacements.Add("<%BookingTime%>", objVR.TimeSlot);
replacements.Add("<%NoOfVisitors%>", objVR.NoOfVisitors);
replacements.Add("<%BookingCode%>", objVR.BookingUniqueID);
MailDefinition mailDef = new MailDefinition();
string MessageBody = String.Empty;
string filePath = System.Web.HttpContext.Current.Request.PhysicalApplicationPath;
using (StreamReader sr = new StreamReader(filePath + @"\en\VREmailEnglish.htm"))
{
MessageBody = sr.ReadToEnd();
}
MailMessage msgHtml = mailDef.CreateMailMessage(to, replacements, MessageBody, new System.Web.UI.Control());
字符串消息= msgHtml.Body.ToString();
Helper.SendTokenEmail(to, subject, msgHtml, isHtml);
public static void SendTokenEmail(string to, string subject, string mailMessage, bool isHtml)
{
try
{
// Create a new message
var mail = new MailMessage();
// Set the to and from addresses.
mail.From = new MailAddress("[email protected]");
mail.To.Add(new MailAddress(to));
// Define the message
mail.Subject = subject;
mail.IsBodyHtml = isHtml;
mail.Body = mailMessage.ToString();
//Object userState = mailMessage;
// Create a new Smpt Client using Google's servers
var mailclient = new SmtpClient();
mailclient.Host = "mail.XYZ.net";
//mailclient.Port = 587; //ForGmail
mailclient.Port = 2525;
mailclient.EnableSsl = false;
mailclient.UseDefaultCredentials = true;
// Specify your authentication details
mailclient.Credentials = new System.Net.NetworkCredential("[email protected]", "XYZPassword");
mailclient.Send(mail);
mailclient.Dispose();
}
catch (Exception ex)
{
}
}
錯誤消息是相當明顯的 - 要添加類型的替代字典是不是字符串。我的猜測會是objVR.BookingDate,這是什麼類型?你可能需要做objVR.BookingDate.ToString() –
這是一個日期類型..讓我試試看。 – Learning
但ListDictionary.Add方法將對象鍵和對象值作爲參數,所以沒有看到objVr.BookingDate作爲問題 – HatSoft