2009-07-09 21 views
5

... <MailDefinition> और <%%> प्लेसहोल्डर


BodyFileName विशेषता संदर्भ डिस्क मेल के शरीर पाठ वाली फ़ाइल। यदि हम बॉडी टेक्स्ट फ़ाइल (पंजीकरणMail.txt) में प्लेसहोल्डर <% UserName %> और <% Password %> डालते हैं, तो CreateUserWizard स्वचालित रूप से इन प्लेसहोल्डर को किसी बनाए गए उपयोगकर्ता के उपयोगकर्ता नाम और पासवर्ड से बदल देगा।

ए) अगर मैं एक नियंत्रण बनाना चाहता हूं जो कुछ पाठ वाले फ़ाइल में <% %> को प्रतिस्थापित करने में सक्षम होगा, तो मैं यह कैसे करूँगा?

बी) क्या मैं इन प्लेसहोल्डर में कोड के पीछे कोड से भी लिख सकता हूं? मतलब, क्या कुछ विधि है जिसे बुलाया जाता है, विशिष्ट टेक्स्ट को कुछ txt फ़ाइल के अंदर प्लेसहोल्डर में लिखता है?


thanx

उत्तर

9

एक साधारण string.Replace() SendingMail घटना में कहा जाता है काम कर देता है।

protected void CreateUserWizard1_SendingMail(object sender, MailMessageEventArgs e) 
{ 
    // Replace <%foo%> placeholder with foo value 
    e.Message.Body = e.Message.Body.Replace("<%foo%>", foo); 
} 

अपना स्वयं का ईमेलिंग तंत्र बनाना मुश्किल नहीं है।

using(MailMessage message = new MailMessage()) 
{ 
    message.To.Add("[email protected]"); 
    message.Subject = "Here's your new password"; 
    message.IsBodyHtml = true; 
    message.Body = GetEmailTemplate(); 

    // Replace placeholders in template. 
    message.Body = message.Body.Replace("<%Password%>", newPassword); 
    message.Body = message.Body.Replace("<%LoginUrl%>", HttpContext.Current.Request.Url.GetLeftPart(UriPartial.Authority) + FormsAuthentication.LoginUrl); // Get the login url without hardcoding it. 

    new SmtpClient().Send(message); 
} 

private string GetEmailTemplate() 
{ 
    string templatePath = Server.MapPath(@"C:\template.rtf"); 

    using(StreamReader sr = new StreamReader(templatePath)) 
     return sr.ReadToEnd(); 
} 
संबंधित मुद्दे