Domanda

Ho un modello di posta elettronica che è solo una pianura, pagina HTML statica.

Ho bisogno di quella pagina nel corpo di un MailMessage.

Di solito quello che vorrei fare è solo creare un StringBuilder e aggiungere le linee più e più volte. Ma è una specie di una pagina lunga, e io non voglio passare per sostituire le virgolette con le virgolette singole etc ..

Quindi, c'è un modo per tirare solo nei contenuti di una pagina HTML in una stringa? Come ad esempio:

emailMessage.IsBodyHtml     = true;
emailMessage.Subject        = "Test Subject";
emailMessage.Body           = GetContentsFrom("emailtemplate.html");

Grazie!

È stato utile?

Soluzione

Potrebbe sostituire GetContentsFrom con File.ReadAllText ?

Altri suggerimenti

Credo che questa routine farebbe il trucco:

private static string GetTemplate(string templateFullPath)
{
    string template;

    if (!File.Exists(templateFullPath))
        throw new ArgumentException("Template file does not exist: " + templateFullPath);

    using (StreamReader reader = new StreamReader(templateFullPath))
    {
        template = reader.ReadToEnd();
        reader.Close();
    }

    return template;
}

è la pagina di essere ospitato da qualche parte? Si potrebbe fare questo:

private string HtmlPageInToString ()

{

WebRequest myRequest;
myRequest = WebRequest.Create(@"http://yoururlhere/");

myRequest.UseDefaultCredentials = true;

WebResponse myResponse = myRequest.GetResponse();

Stream ReceiveStream = myResponse.GetResponseStream();
Encoding encode = System.Text.Encoding.GetEncoding("utf-8");

StreamReader readStream = new StreamReader(ReceiveStream, encode);

return readStream.ReadToEnd();

}

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top