Internet Explorer 5.5IIS 5.1IEIISVisual Studio .NET 2003Windows 2003.NET 1.1Windows 2000Windows XPHTML中级开发Visual StudioWindows.NETASP.NETC#
使用 SMTP 服务器在 ASP.NET 中发送带附件的电子邮件






3.44/5 (30投票s)
2005年6月28日
2分钟阅读

458527

23379
本文介绍了如何使用 SMTP 服务器发送带附件的邮件,以及如何配置 SMTP 服务器。
引言
此应用程序演示了如何使用 SMTP 服务器发送带附件的邮件,以及如何配置默认 SMTP 服务器。 System.Web.Mail
命名空间提供了在 .NET 中发送电子邮件的类。 涉及的类有 MailMessage
(管理邮件消息的内容)和 MailAttachment
(管理邮件附件)。
设置 SMTP 服务器
在运行应用程序之前,您需要确认这些服务器设置
- 确保 SMTP 服务器正在运行,只有这样才能中继邮件。 如果不是,打开 IIS 窗口,在 IIS 中查找左侧树视图中的“本地计算机”,您将在其下看到“默认 SMTP 虚拟服务器”,如果不可用,则需要安装它。
- 要配置“默认 SMTP 虚拟服务器”,请右键单击它,进入“属性”,选择“访问”选项卡,然后单击“中继”按钮。 在选择“仅限以下列表”单选按钮后,您应该看到本地 IP 地址:“127.0.0.1”,如果不存在,您需要添加它。
- 如果您使用“localhost”或“127.0.0.1”作为
SmtpMail.SmtpServer
,请确保“允许匿名访问”。 要允许访问,请打开 IIS。 找到 SMTP 虚拟服务器,然后右键单击并选择属性。 在访问选项卡上,单击身份验证按钮。 确保只选中“匿名访问”复选框。 - 使用在
SmtpMail.SmtpServer
上存在的真实 from 和 to 地址。 不要使用无效地址。
获取对象
最初,我们需要为 MailMessage
类创建一个新对象,我们将其称为“mailMessage
”。 然后,我们将此对象的 From
、To
、Cc
、Bcc
、Subject
和 Body
属性以及 BodyFormat
设置为 Web 窗体上的值
/* Create a new blank MailMessage */
MailMessage mailMessage = new MailMessage ();
mailMessage.From = txtSender.Text;
mailMessage.To = txtReceiver.Text;
mailMessage.Cc = txtCc.Text;
mailMessage.Bcc = txtBcc.Text;
mailMessage.Subject = txtSubject.Text;
mailMessage.Body = txtBody.Text;
/* Set the properties of the MailMessage to the
values on the form */
if (rblMailFormat.SelectedItem.Text == "Text")
mailMessage.BodyFormat = MailFormat.Text;
else
mailMessage.BodyFormat = MailFormat.Html;
制作附件
要制作附件,我们需要使用 MailAttachment
类,为此我们创建一个对象 attach
。 以下代码块检查 Web 窗体的打开文件对话框(打开文件对话框是一个 HTML 文件字段控件,我们在其中添加了 runat="server"
属性)。 如果有值,则上传该文件,将其保存在服务器上,并将其作为附件添加到电子邮件中。
/* Beginning of Attachment1 process &
Check the first open file dialog for a attachment */
if (inpAttachment1.PostedFile != null)
{
/* Get a reference to PostedFile object */
HttpPostedFile attFile = inpAttachment1.PostedFile;
/* Get size of the file */
int attachFileLength = attFile.ContentLength;
/* Make sure the size of the file is > 0 */
if (attachFileLength > 0)
{
/* Get the file name */
strFileName = Path.GetFileName(inpAttachment1.PostedFile.FileName);
/* Save the file on the server */
inpAttachment1.PostedFile.SaveAs(Server.MapPath(strFileName));
/* Create the email attachment with the uploaded file */
MailAttachment attach = new MailAttachment(Server.MapPath(strFileName));
/* Attach the newly created email attachment */
mailMessage.Attachments.Add(attach);
/* Store the attach filename so we can delete it later */
attach1 = strFileName;
}
}
现在,我们发送带附件的电子邮件
SmtpMail.SmtpServer = "127.0.0.1";
(Or)
SmtpMail.SmtpServer.Insert(0,"127.0.0.1");
SmtpMail.Send (mailMessage);
最后,如果有附件,我们需要将其删除
/* Delete the attachements if any */
if (attach1 != null)
File.Delete(Server.MapPath(attach1));
if (attach2 != null)
File.Delete(Server.MapPath(attach2));
if (attach3 != null)
File.Delete(Server.MapPath(attach3));
设置 SMTP 邮件服务器的各种方法
SmtpMail.SmtpServer = "localhost"
或
SmtpMail.SmtpServer = "127.0.0.1"
或
SmtpMail.SmtpServer.Insert( 0,
"127.0.0.1 or your mail server name here")
您需要将“localhost”替换为 Windows 桌面计算机上的 SMTP 邮件服务器的名称或 IP 地址,或者您可以插入服务器,但“localhost”是默认值,通常可以工作。