ASP.NET-发送电子邮件

时间:2009-04-20 10:27:58

标签: asp.net

我正在做一个航班预订系统,我想向用户发送一封电子邮件,其中包含旅行的电子机票。电子机票是动态生成的,其中包含从数据库中获取的预订ID以及之前页面中的其他详细信息,例如乘客姓名和所有内容。那么如何将动态生成的电子机票发送给他的电子邮件ID?

6 个答案:

答案 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格式。