我正在做一个航班预订系统,我想向用户发送一封电子邮件,其中包含旅行的电子机票。电子机票是动态生成的,其中包含从数据库中获取的预订ID以及之前页面中的其他详细信息,例如乘客姓名和所有内容。那么如何将动态生成的电子机票发送给他的电子邮件ID?
答案 0 :(得分:5)
警告:此问题的已接受答案建议使用System.Web.Mail
发送电子邮件。但是,此API已在.NET 2.0中替换为System.Net.Mail
,而System.Web.Mail
的类现在都已标记为已过时/已弃用。
以下是如何在.NET中构建和发送邮件消息的一个简单示例:
using (MailMessage message = new MailMessage())
{
message.From = new MailAddress("boss@example.com");
message.To.Add(new MailAddress("you@example.com"));
message.Subject = "Get back to work!";
message.Body = "Stop hanging around SO.";
SmtpClient smtp = new SmtpClient();
smtp.Send(message);
}
实际上,使用SmtpClient.Send()
方法可以将上面的代码编写得更短:
SmtpClient smtp = new SmtpClient();
smtp.Send("boss@example.com", "you@example.com",
"Get back to work!", "Stop hanging around SO.");
但是,您通常需要使用“详细”样式,以便能够在地址上设置显示名称,更改邮件内容类型或向邮件添加附件。
无论您选择哪种方式,都需要根据SMTP设置配置应用程序,告诉它如何发送电子邮件。在您的应用程序配置文件(在ASP.NET应用程序中为web.config
)中,您需要添加如下内容:
<system.net>
<mailSettings>
<smtp from="default@example.com">
<network host="smtp.example.com" />
</smtp>
</mailSettings>
</system.net>
确切的设置取决于您希望应用程序传递邮件的方式。使用上面的示例配置,邮件将通过指定的SMTP服务器进行中继。其他解决方案包括让应用程序将消息写入拾取文件夹,本地IIS虚拟邮件服务器将从该文件夹处理它们。有关详细信息,请参阅official documentation。
答案 1 :(得分:3)
可以使用System.Net.Mail命名空间发送电子邮件。我会考虑使用StringBuilder或String.Format将详细信息放入电子邮件正文中。
答案 2 :(得分:3)
警告:我对此问题的原始回答建议使用System.Web.Mail发送电子邮件。但是,这个API已经被.NET 2.0中的System.Net.Mail所取代,而System.Web.Mail的类现在都被标记为过时/弃用。
您可以使用System.Web.Mail.Mailmessage类:
System.Web.Mail.MailMessage mailMessage = new System.Web.Mail.MailMessage();
mailMessage.To = "recipient@repipient.com";
mailMessage.From = "sender@sender.com";
mailMessage.Subject = "Email subject";
mailMessage.BodyFormat = System.Web.Mail.MailFormat.Html;
mailMessage.Body = "Email body";
System.Web.Mail.SmtpMail.SmtpServer = System.Configuration.ConfigurationSettings.AppSettings["mailserver"];
System.Web.Mail.SmtpMail.Send(mailMessage);
答案 3 :(得分:1)
在asp.net v2.0中不推荐使用System.web.mail;你应该忽略那个答案,然后倾听那些指向你使用system.net.mail的人。
答案 4 :(得分:0)
查看MailMessage课程。该MSDN页面包含完整的示例,包括如何处理附件。
或者查看Scott Guthries博客中的this short tutorial - 它还解释了配置文件(web.config)中的必需条目。
答案 5 :(得分:0)
在ASP.NET中发送电子邮件非常简单。 Jsut在代码中生成消息的内容,拉入固定和动态元素以创建正文的完整字符串,然后简单地以纯文本或HTML格式发送它。
以下是执行发送调用的基本结构:
导入System.Net.Mail
Dim eMessage As New MailMessage(senderAddress, receiverAddress)
eMessage.Subject = emailSubject
eMessage.Body = emailBody
eMessage.IsBodyHtml = emailIsHTML
eMessage.Attachments.Add(emailAttachment)
' send email object
Dim smtp As New SmtpClient
smtp.Send(eMessage)
内容的动态部分仅仅是一个字符串构建器或类似方法,用于根据您需要的固定和动态元素构建字符串,如果您想使用HTML电子邮件等,则添加HTML格式。