在.NET环境中,发送电子邮件是一项常见的任务。本文将介绍如何使用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");