ASP.NET-发送电子邮件

Ros*_*han 1 asp.net

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

Jør*_*ode 5

警告:此问题的已接受答案建议System.Web.Mail用于发送电子邮件.但是,此API已System.Net.Mail在.NET 2.0中被替换,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);
}
Run Code Online (Sandbox Code Playgroud)

实际上,使用以下SmtpClient.Send()方法可以将上面的代码写得更短:

SmtpClient smtp = new SmtpClient();
smtp.Send("boss@example.com", "you@example.com",
          "Get back to work!", "Stop hanging around SO.");
Run Code Online (Sandbox Code Playgroud)

但是,您通常需要使用"详细"样式,以便能够在地址上设置显示名称,更改消息内容类型或向邮件添加附件.

无论您选择哪种方式,都需要根据SMTP设置配置应用程序,告诉它如何发送电子邮件.在您的应用程序配置文件(将web.config在ASP.NET应用程序中)中,您需要添加如下内容:

<system.net>
    <mailSettings>
        <smtp from="default@example.com">
            <network host="smtp.example.com" />
        </smtp>
    </mailSettings>
</system.net>
Run Code Online (Sandbox Code Playgroud)

确切的设置取决于您希望应用程序如何传递邮件.使用上面的示例配置,邮件将通过指定的SMTP服务器进行中继.其他解决方案包括让应用程序将消息写入拾取文件夹,本地IIS虚拟邮件服务器将从该文件夹处理它们.有关详细信息,请参阅官方文档