65.9K
CodeProject 正在变化。 阅读更多。
Home

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

starIconstarIconstarIcon
emptyStarIcon
starIcon
emptyStarIcon

3.12/5 (12投票s)

2005年8月20日

5分钟阅读

viewsIcon

138288

downloadIcon

4517

带有用于格式化文本和附件的文本编辑器的电子邮件应用程序。

Sample screenshot

引言

到目前为止,您已经看到了从 Asp.Net 发送电子邮件,但不是在一个应用程序中发送格式化文本和附件。现在我为您带来完整的电子邮件发送功能,其中包括像彩色、粗体、斜体、缩进这样的格式化文本编辑器,您甚至可以在单个应用程序中添加链接和图片以及附件

基本的格式化工具和附件集成在一个应用程序中,并且还演示了如何使用 SMTP 服务器以及如何配置默认 SMTP 服务器。 该System.Web.Mail 命名空间提供了在 .NET 中发送电子邮件的类。 涉及的类是 MailMessage(用于管理邮件内容)和 MailAttachment(用于管理邮件附件)。 文本的格式化由 TextEdit.js 和 MsgBody.htm 文件完成,这些文件包含在 SendEmail.aspx 页面中。

配置 SMTP 服务器

  1. 要配置“默认 SMTP 虚拟服务器”,请右键单击它,选择“属性”,然后选择“访问”选项卡,然后单击“中继”按钮。 当选择了“仅下列列表”单选按钮时,您应该会看到本地 IP 地址:“127.0.0.1”,如果它不在那里,则需要添加它。
  2. 如果您将“localhost”或“127.0.0.1”用作 SmtpMail.SmtpServer,请确保“允许匿名访问”。 要允许访问,请打开 IIS。 找到 SMTP 虚拟服务器,右键单击并选择属性
  3. 您需要将“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 调色板,用于给文本着色,如下所示)

Sample screenshot 

 

添加文本编辑器的步骤:-

在 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
© . All rights reserved.