skip to Main Content

I have a razor view and I want to store the compiled version in a string and send a mail containing it

I’ve tried this :

string body = Engine.Razor.RunCompile(template,"templateKey",null,model);

but I received this error:

Could not load type
‘System.Security.Principal.WindowsImpersonationContext

2

Answers


  1. Maybe you can look here https://www.learnrazorpages.com/advanced/render-partial-to-string and see how to get razor view to string.

    After you get razor view as html string you can use that string as body for email.

    Login or Signup to reply.
  2. Also for sending emails you may use xsl templates and bing xml data wıth template and create your html content

    private string getEMailBodyAccountForgetPassword(User User)
    {
        string recieverName = User.Name;
        string validationKey = User.ValidationKey;
        string applicationDisplayName = applicationName;
        string resetLink = $"{host}/account/resetpassword/start/{validationKey}";
        string template = emailTemplateRootPath + "\Account\ForgetPassword\ForgetPassword.xsl";
    
        string xmlData = "<email>";
        xmlData += $"<recievername>{recieverName}</recievername>";
        xmlData += $"<link>{resetLink}</link>";
        xmlData += $"<applicationdisplayname>{applicationDisplayName}</applicationdisplayname>";
        xmlData += "</email>";
    
        string body = Fabrikafa.Common.Functions.BindXslData(xmlData, template);
    
        return body;
    }
    

    Here is the bind method:

    public static string BindXslData(string XmlData, string XslFile)
    {
        string empty = string.Empty;
        XmlDocument xmlDocument = new XmlDocument();
        xmlDocument.LoadXml(XmlData);
        XslCompiledTransform xslCompiledTransform = new XslCompiledTransform();
        xslCompiledTransform.Load(XslFile);
        XPathNavigator input = xmlDocument.CreateNavigator();
        StringBuilder stringBuilder = new StringBuilder();
        XmlWriter xmlWriter = XmlWriter.Create(stringBuilder);
        xslCompiledTransform.Transform(input, xmlWriter);
        xmlWriter.Close();
        return stringBuilder.ToString();
    }
    

    Here is the xsl template:

    <?xml version="1.0" encoding="utf-16"?>
    <xsl:stylesheet version="1.0"
                    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                    xmlns:msxsl="urn:schemas-microsoft-com:xslt"
                    exclude-result-prefixes="msxsl">
    
        <xsl:output method="html" indent="yes"/>
    
        <xsl:template match="@* | node() | /">
            <html>
                <head>
                    <link href="https://fonts.googleapis.com/css?family=PT+Sans" rel="stylesheet"/>
                    <style>
                        body {
                        font-family: 'PT Sans', sans-serif;
                        }
                    </style>
                </head>
                <body>
                    <div>
                        <img src="https://eu2.contabostorage.com/80ec950384cb46a8bf00f0e75660cedf:fabrikafa.content/Logo/apps/Yoneticim.EmailProviders-Logo-sm.png" /><br/>
    
                        <h2>
                            <xsl:value-of select="//email/applicationdisplayname"/> - Password Reset
                        </h2>
                        Dear <xsl:value-of select="//email/recievername"/>,<br/>
                        <br/>
    
                        To reset your password, please click link below.<br/>
                        <br/><br/>
    
                        <a href="https://{//email/link}" target="_blank">
                            https://<xsl:value-of select="//email/link"/>
                        </a>
                        <br/>
                        <br/>
                        <br/>
                        <b>
                            <xsl:value-of select="//email/applicationdisplayname"/> Team
                        </b>
                    </div>
                </body>
            </html>
        </xsl:template>
    </xsl:stylesheet>
    
    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search