C#发送.htm电子邮件模板

时间:2013-04-16 10:58:59

标签: c# email smtp

使用下面的简单SMTP C#代码发送电子邮件,我该如何发送电子邮件模板?

    System.Net.Mail.MailMessage message = new System.Net.Mail.MailMessage();
    message.To.Add(toEmailAddress);
    message.Subject = "subject";
    message.From = new System.Net.Mail.MailAddress(from);
    message.Body = "http://www.yoursite.com/email.htm";
    message.IsBodyHtml = true;
    System.Net.Mail.SmtpClient smtp = new System.Net.Mail.SmtpClient("server");
    smtp.Send(message);

目前,正如预期的那样,收到的电子邮件只包含模板的URL。我怎么能让它发送模板?

3 个答案:

答案 0 :(得分:2)

System.Net.WebClient client = new System.Net.WebClient();
string html = client.DownloadString("http://www.yoursite.com/email.htm");

System.Net.Mail.MailMessage message = new System.Net.Mail.MailMessage();
message.To.Add(toEmailAddress);
message.Subject = "subject";
message.From = new System.Net.Mail.MailAddress(from);
message.Body = html;
message.IsBodyHtml = true;
System.Net.Mail.SmtpClient smtp = new System.Net.Mail.SmtpClient("server");
smtp.Send(message);

答案 1 :(得分:0)

您的问题实际上是关于从网址读取字符串,其中一个可能的答案是:

var url = "http://www.yoursite.com/email.htm";
var body = "";

using(var client = new WebClient()) {
   body = client.DownloadString(url);
}

答案 2 :(得分:0)

如果文件是本地文件,而不是使用下载,您只需使用System.IO读取它,例如

    string html;
    System.IO.StreamReader fstream;
    fstream = File.OpenText("yourpathgoeshere.html");
    html = fstream.ReadToEnd();
    fstream.Close();

在此之后,只需按照其他帖子中的建议分配其余属性。如果您所追踪的html文件存储在本地,这可能更好,或者如果它经常被访问,最好将它存储在本地并使用此方法。

请注意,您需要导入System.IO才能正常工作。