在单个应用程序中使用格式化文本编辑器和附件从 Asp.Net 发送电子邮件。






3.12/5 (12投票s)
2005年8月20日
5分钟阅读

138288

4517
带有用于格式化文本和附件的文本编辑器的电子邮件应用程序。
引言
到目前为止,您已经看到了从 Asp.Net 发送电子邮件,但不是在一个应用程序中发送格式化文本和附件。现在我为您带来完整的电子邮件发送功能,其中包括像彩色、粗体、斜体、缩进这样的格式化文本编辑器,您甚至可以在单个应用程序中添加链接和图片以及附件。
基本的格式化工具和附件集成在一个应用程序中,并且还演示了如何使用 SMTP 服务器以及如何配置默认 SMTP 服务器。 该System.Web.Mail
命名空间提供了在 .NET 中发送电子邮件的类。 涉及的类是 MailMessage
(用于管理邮件内容)和 MailAttachment
(用于管理邮件附件)。 文本的格式化由 TextEdit.js 和 MsgBody.htm 文件完成,这些文件包含在 SendEmail.aspx 页面中。
配置 SMTP 服务器
- 要配置“默认 SMTP 虚拟服务器”,请右键单击它,选择“属性”,然后选择“访问”选项卡,然后单击“中继”按钮。 当选择了“仅下列列表”单选按钮时,您应该会看到本地 IP 地址:“127.0.0.1”,如果它不在那里,则需要添加它。
- 如果您将“localhost”或“127.0.0.1”用作 SmtpMail.SmtpServer,请确保“允许匿名访问”。 要允许访问,请打开 IIS。 找到 SMTP 虚拟服务器,右键单击并选择属性。
- 您需要将“localhost”替换为您的 SMTP 邮件服务器的名称或 IP 地址。 在 Windows 桌面计算机上,“localhost”是默认值,通常可以使用。
代码工作原理
MailMessage 包含所有必需的属性,如 To、Subject、BCC、CC 等。 有关您可以使用的完整方法和属性列表,请访问 http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfSystemWebMailMailMessageMembersTopic.asp
现在,在编写实际的发送电子邮件代码之前,我们需要编写格式化文本或准备文本编辑器的代码。 对于文本编辑器,我们需要 3 个文件
1) MsgBody.htm (此文件包含要编辑的文本。)
2) Textedit.js (此文件包含格式化文本的代码)
3) ColorPalette.htm (创建了一个 HTML 调色板,用于给文本着色,如下所示)
添加文本编辑器的步骤:-
在 TextEdit.js 中,以下代码显示 ColorPalette
这里我为此目的使用了一个 IFrame,并将其属性设置为“on”。 IFrane 元素充当文档中的文档。我们正在键入文本,并且所有格式都在 <SPAN style="FONT-SIZE: 10pt">iframe
的内部文本中,并检索 IFrame 的 innerText。
在 SendEmail.aspx 页面中添加以下代码
<SCRIPT language="javascript" src="TextEdit.js"></SCRIPT>
此文件使用 JavaScript 中的 <SPAN style="FONT-SIZE: 10pt">execCommand
方法执行所有内容。
SendEmail.aspx.vb 页面中 Button Click 事件中的下面这行代码会触发 JavaScript 来将格式化的文本加载为消息正文。
Button1.Attributes.Add("onClick", "javascript:fillTxt();")
实际的 DotNet 代码
我们已经完成了格式化文本的后台工作。现在,我们开始发送邮件的实际编码,导入命名空间“System.Web.Mail”。 然后,在 ButtonClick 事件中,我们创建一个 MailMessage 对象的实例。通过 MailMessage 对象,我们设置所有属性,如 To、From、Subject、Body 等。我们可以发送文本消息或 HTML 消息。我们需要在 BodyFormat 属性中指定 BodyFormat。 设置完所有属性后,就可以发送电子邮件了。 在发送电子邮件之前,您必须设置另一个重要属性,即 SmtpServer。您必须设置此属性。您应该将 SMTP 服务器的名称分配给此属性。在大多数情况下,您可以将其分配为“localhost”或“127.0.0.1”。如果未设置此属性,则无法从 ASP .NET 页面发送电子邮件。最后,我们使用 SmtpMail.Send 发送电子邮件。
Button1.Attributes.Add("onClick", "javascript:fillTxt();")
Dim attach1 As String = ""
Dim strFileName As String = ""
Dim message As New MailMessage()
If (attachFile1.PostedFile.FileName <> "") Then
Dim ulFile As HttpPostedFile = attachFile1.PostedFile
Dim nFileLen As Int64 = ulFile.ContentLength
If (nFileLen > 0) Then
strFileName= Path.GetFileName(attachFile1.PostedFile.FileName)
strFileName = "Uploads/" + strFileName
attachFile1.PostedFile.SaveAs(Server.MapPath(strFileName))
Dim attach As MailAttachment = New MailAttachment(Server.MapPath(strFileName))
message.Attachments.Add(attach)
attach1 = strFileName
End If
End If
message.From = TextBox2.Text
message.To = TextBox3.Text
message.Cc = txtcc.Text
message.Bcc = txtbcc.Text
message.Subject = TextBox4.Text
message.Body = hdnmsg.Value
message.BodyFormat = MailFormat.Html
SmtpMail.SmtpServer = "127.0.0.1"
SmtpMail.Send(message)
lblMessage.Text = "您的电子邮件已发送"
现在,我们发送带有附件的电子邮件:
要发送附件,我们需要使用 Add 方法添加附件,该方法在 Attachments 对象中可用。上面的示例只需要添加
Dim attach As MailAttachment = New MailAttachment(Server.MapPath(strFileName))
您添加到上述示例的增强功能。
我们可以向电子邮件添加任意数量的附件。要发送多个附件,只需重复 Msg.Attachments.Add 行并添加需要附加的文件。
要点:-
- 请确保您已经在根目录下创建了一个名为“Uploads”的文件夹,并对此文件夹拥有完全访问权限。
- 不要忘记将 Form 标签的属性更改为encType="multipart/form-data"
- 为您的浏览器启用 JavaScript,因为调色板基于 JavaScript。
- 将您的默认 SMTP 虚拟服务器配置为 SmtpMail.SmtpServer = "127.0.0.1" 或 Localhost。
- 导入命名空间 system.web.mail