伙计我正在尝试通过SMTP服务器发送邮件。我正在使用此代码发送邮件,
using(System.Net.Mail.MailMessage message = new System.Net.Mail.MailMessage())
{
message.To.Add(textBox1.Text); //TextBox1 = Send To
message.Subject = textBox2.Text; //TextBox2 = Subject
message.From = new System.Net.Mail.MailAddress("email id");
message.Body = textBox3.Text; //TextBox3 = Message Body
using(System.Net.Mail.SmtpClient smtp = new System.Net.Mail.SmtpClient())
{
smtp.Host = "smtp.server.com";
smtp.Credentials = new System.Net.NetworkCredential("user", "pass");
smtp.Send(message);
}
}
现在这段代码完美无缺。现在我想在邮件正文中发送一个完整的表单,比如选择多个文本框的值。这是表格,我想通过邮件发送:
如何设计消息模板,以便它可以发送包含您在上述表单中看到的所有值的正文的消息?
答案 0 :(得分:3)
使用StringBuilder
并以所需格式构建所有文本框中的字符串,并将其分配给message.Body
如果您希望输出显示为您的表单,您可以将HTML
添加到将由电子邮件客户端呈现的字符串,但是您不能使用CSS
进行样式设置。
举个例子:
private string BuildMessageBody()
{
StringBuilder builder = new StringBuilder();
builder.Append("<html>");
builder.Append("<body>");
// Custom HTML code could go here (I.e. a HTML table).
builder.Append(TextBox1.Text); // Append the textbox value
builder.Append("</body>");
builder.Append("</html>");
return builder.ToString();
}
然后你可以这样做:
message.Body = BuildMessageBody();
请务必将IsBodyHtml
的{{1}}属性设置为true
:
MailMessage
对于所有文本框控件,你可能会稍微复杂一点并迭代你的表单并以这种方式构建字符串,这将是一个很好的解决方案IMO - 但是这应该为你需要实现的目标提供一个起点。
答案 1 :(得分:2)
您可以使用StringBuilder
:
StringBuilder sb = new StringBuilder();
sb.AppendLine("Name: " + tbName.Text);
sb.AppendLine("SurName: " + tbSurName.Text);
message.Body = sb.ToString();
或string.Format:
message.Body = string.Format(@"
Name: {0}
SurName: {1}
", tbName.Text, tbSurName.Text);
我更喜欢string.Format
版本。还有许多其他方法,比如阵列加入,但这两个都足够了。
编辑HTML(来自评论):
message.Body = string.Format(@"
<html>
<body>
<div>
<span class=""name"">Name:</span> <span class=""value"">{0}</span>
</div>
<div>
<span class=""name"">SurName:</span> <span class=""value"">{1}</span>
</div>
</body>
</html>", tbName.Text, tbSurName.Text);
答案 2 :(得分:0)
如果要放置HTML文件,只需将MailMessage.BodyFormat属性设置为MailFormat.Html,然后将html文件的内容转储到MailMessage.Body属性:
using (StreamReader reader = File.OpenText(htmlFilePath)) // Path to your
{ // HTML file
MailMessage myMail = new MailMessage();
myMail.From = "from@microsoft.com";
myMail.To = "to@microsoft.com";
myMail.Subject = "HTML Message";
myMail.BodyFormat = MailFormat.Html;
myMail.Body = reader.ReadToEnd(); // Load the content from your file...
//...
}
否则,您可以使用StringBuilder创建一个正文。如果单击,您将找到StringBuilder的示例和用法