Come estrarre il contenuto di una e-mail pagina / template in un corpo MailMessage in .NET
-
18-09-2019 - |
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!
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();
}