Простая 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( "none@none.com" );
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();
}