使用SMTP服务器发送带附件的邮件

.NET环境中,发送电子邮件是一项常见的任务。本文将介绍如何使用SMTP服务器发送带附件的邮件,并展示如何配置默认的SMTP服务器。

SMTP服务器的配置

在运行应用程序之前,需要确认SMTP服务器的设置。确保SMTP服务器正在运行,以便它可以转发邮件。如果SMTP服务器没有运行,需要打开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表单上的值:

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; if (rblMailFormat.SelectedItem.Text == "Text") mailMessage.BodyFormat = MailFormat.Text; else mailMessage.BodyFormat = MailFormat.Html;

制作附件

要制作附件,需要使用MailAttachment类,为此创建一个对象attach。以下代码块检查web表单的打开文件对话框(打开文件对话框是一个HTML文件字段控件,为其添加了runat="server"属性)。如果有值,文件将被上传、保存在服务器上,并作为电子邮件的附件添加。

if (inpAttachment1.PostedFile != null) { HttpPostedFile attFile = inpAttachment1.PostedFile; int attachFileLength = attFile.ContentLength; if (attachFileLength > 0) { strFileName = Path.GetFileName(inpAttachment1.PostedFile.FileName); inpAttachment1.PostedFile.SaveAs(Server.MapPath(strFileName)); MailAttachment attach = new MailAttachment(Server.MapPath(strFileName)); mailMessage.Attachments.Add(attach); attach1 = strFileName; } }

现在,发送带有附件的电子邮件:

SmtpMail.SmtpServer = "127.0.0.1"; SmtpMail.Send(mailMessage);

最后,如果附件可用,那么需要删除它:

if (attach1 != null) File.Delete(Server.MapPath(attach1)); if (attach2 != null) File.Delete(Server.MapPath(attach2)); if (attach3 != null) File.Delete(Server.MapPath(attach3)); SmtpMail.SmtpServer = "localhost"; SmtpMail.SmtpServer = "127.0.0.1"; SmtpMail.SmtpServer.Insert(0, "127.0.0.1 or your mail server name here");
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485