如何将此asp.net电子邮件转到数据库?

时间:2012-05-15 08:44:26

标签: asp.net database vb.net visual-studio visual-studio-2010

我有一个联系表格(VS 2010 / VB / .net4),当客户填写表格时,我收到了一封电子邮件 - 我喜欢,但是....

例如,这是我收到的一封电子邮件:

  

电子邮件:ivy_league_alum-at-yahoo.com

     

主题:你们整合PPT吗?

     

消息:我正在密歇根地区寻找PPT集成商。

     

First_Name:Tim

     

Last_Name:Dewar

     

组织:American Axle

     

浏览器:Mozilla / 5.0(Windows NT 5.1)AppleWebKit / 535.7(KHTML,如   Gecko)Chrome / 16.0.912.75 Safari / 535.7

     

IP地址:184.60.79.96

     

服务器日期&时间:2012年1月13日上午11:28:59

这只是一家引领潮流的公司,所以我们会收到很多电子邮件,我们会希望它们有条理。

Jon P建议我使用数据库收集我收到的所有这些电子邮件,而不是MS Excel(我不知道该怎么办)。所以我下载了SQL Server Express。那我现在该怎么办?有人可以告诉我,我必须添加到代码中,具体来说,或者我必须做什么,这样我才能以有条理的方式收集这些电子邮件?谢谢!

附录(我知道这很长):

具体来说,我的电子邮件地址是:

  

<%@ Page Title =“Contact Health Nutts”Language =“VB”   MasterPageFile =“〜/ Site.master”AutoEventWireup =“false”   CodeFile =“contact.aspx.vb”Inherits =“contact”%>                  Protected Sub SubmitForm_Click(ByVal sender As Object,ByVal e As System.EventArgs)               如果不是Page.IsValid然后退出Sub

        Dim SendResultsTo As String = "jason.weber-at-healthynutts.com"
        Dim smtpMailServer As String = "smtp.healthynutts.com"
        Dim smtpUsername As String = "jason.weber-at-healthynutts.com"
        Dim smtpPassword As String = "********"
        Dim MailSubject As String = "Form Results"

        Try
            Dim txtQ As TextBox = Me.FormContent.FindControl("TextBoxQ")
            If txtQ IsNot Nothing Then
                Dim ans As String = ViewState("hf1")
                If ans.ToLower <> txtQ.Text.ToLower Or ans.ToUpper <> txtQ.Text.ToUpper Then
                    Me.YourForm.ActiveViewIndex = 3
                    Exit Sub
                End If
            End If

            Dim FromEmail As String = SendResultsTo
            Dim msgBody As StringBuilder = New StringBuilder()
            Dim sendCC As Boolean = False


            For Each c As Control In Me.FormContent.Controls
                Select Case c.GetType.ToString
                    Case "System.Web.UI.WebControls.TextBox"
                        Dim txt As TextBox = CType(c, TextBox)
                        If txt.ID.ToLower <> "textboxq" Then
                            msgBody.Append(txt.ID & ": " & txt.Text & vbCrLf & vbCrLf)
                        End If
                        If txt.ID.ToLower = "email" Then
                            FromEmail = txt.Text
                        End If
                        If txt.ID.ToLower = "subject" Then
                            MailSubject = txt.Text
                        End If
                    Case "System.Web.UI.WebControls.CheckBox"
                        Dim chk As CheckBox = CType(c, CheckBox)
                        If chk.ID.ToLower = "checkboxcc" Then
                            If chk.Checked Then sendCC = True
                        Else
                            msgBody.Append(chk.ID & ": " & chk.Checked & vbCrLf & vbCrLf)
                        End If

                    Case "System.Web.UI.WebControls.RadioButton"
                        Dim rad As RadioButton = CType(c, RadioButton)
                        msgBody.Append(rad.ID & ": " & rad.Checked & vbCrLf & vbCrLf)
                    Case "System.Web.UI.WebControls.DropDownList"
                        Dim ddl As DropDownList = CType(c, DropDownList)
                        msgBody.Append(ddl.ID & ": " & ddl.SelectedValue & vbCrLf & vbCrLf)
                End Select
            Next
            msgBody.AppendLine()

            msgBody.Append("Browser: " & Request.UserAgent & vbCrLf & vbCrLf)
            msgBody.Append("IP Address: " & Request.UserHostAddress & vbCrLf & vbCrLf)
            msgBody.Append("Server Date & Time: " & DateTime.Now & vbCrLf & vbCrLf)

            Dim myMessage As System.Net.Mail.MailMessage = New System.Net.Mail.MailMessage()
            myMessage.To.Add(SendResultsTo)
            myMessage.From = New System.Net.Mail.MailAddress(FromEmail)
            myMessage.Subject = MailSubject
            myMessage.Body = msgBody.ToString
            myMessage.IsBodyHtml = False
            If sendCC Then myMessage.CC.Add(FromEmail)


            Dim basicAuthenticationInfo As New System.Net.NetworkCredential(smtpUsername, smtpPassword)
            Dim MailObj As New System.Net.Mail.SmtpClient(smtpMailServer)
            MailObj.Credentials = basicAuthenticationInfo
            MailObj.Send(myMessage)

            Me.YourForm.ActiveViewIndex = 1
        Catch
            Me.YourForm.ActiveViewIndex = 2
        End Try
    End Sub

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
        If Not Page.IsPostBack Then
            Dim lbl As Label = Me.FormContent.FindControl("labelq")
            If lbl IsNot Nothing Then
                Dim rq(3) As String
                rq(0) = "Is fire hot or cold?"
                rq(1) = "Is ice hot or cold?"
                rq(2) = "Is water wet or dry?"

                Dim ra(3) As String
                ra(0) = "hot"
                ra(1) = "cold"
                ra(2) = "wet"

                Dim rnd As New Random
                Dim rn As Integer = rnd.Next(0, 3)
                lbl.Text = rq(rn)
                ViewState("hf1") = ra(rn)
            End If
        End If
    End Sub
</script> </asp:Content> <asp:Content ID="Content2" ContentPlaceHolderID="MainContent" Runat="Server"> <h1>CONTACT HEALTH
     

来自您自己家的舒适的坚果和工作!

                                                                           输入您的电子邮件地址:
                                                                                   *必填                   * 请输入有效的电子邮件地址。                   
                  
                                                 主题:
                                                                                   *必填                   
                  
                                                 请在下面输入您的消息:                       *必填                       
                                                                                   
                  
                                                 名字:
                                                            *必填                   
                  
                                                 姓氏:
                                                                                   *必填                   
                  
                                                 电话号码:
                                                                                   *必填                   *请输入有效的美国电话号码(包括破折号码)。                   
                  
                                                 城市:
                                                                                   *必填                   
                  
                                                 州/省:
                                                                                   *必填                   
                  
                                             
                  
                                     
                  
                                     
                                                您的留言已发送。感谢您与我们联系。
                                                由于技术问题,您的邮件可能尚未发送。                                                 您没有正确回答反垃圾邮件问题。请返回重试。                           

2 个答案:

答案 0 :(得分:2)

答案 1 :(得分:2)

不要以错误的方式采取这种做法,但根据你所说的关于缺乏编码能力的判断来判断,让别人为你做这项工作可能会更便宜。一个称职的程序员应该能够在大约一个小时内为你敲出一些东西,如果他不停下来喝咖啡可能会更少。

如果你真的真的想自己做,那么首先,你必须要知道网站的托管包装是否包含数据库。

假设您没有在本地计算机上托管网站,那么在您的计算机上安装SQL Express版本将帮助您开发代码,但您将无法部署它。

完全忽略这一点,你想要经历的步骤是:

  1. 在SQL中创建数据库,然后创建相关数据库 表
  2. 使用ADO.Net
  3. 创建从网站到数据库的连接
  4. 创建代码以将联系表单数据插入数据库表
  5. 然后,您需要考虑在收集数据后如何查看数据,因此您要么必须编写内容或学习SQL。

    如果你想要一些代码示例来帮助你开始,那么我们需要知道你正在使用什么语言(它应该是C#或VB.Net),并且发布联系表单的代码也会有所帮助(显然删除任何敏感细节,例如用户名和密码。)

    修改

    创建数据库后,此脚本应在SQL Express中为您提供基本的表结构:

    CREATE TABLE [dbo].[tblEmails](
        [EmailID] [int] IDENTITY(1,1) NOT NULL,
        [EmailAddress] [nvarchar](200) NOT NULL,
        [Subject] [nvarchar](200) NOT NULL,
        [Message] [nvarchar](max) NOT NULL,
        [FirstName] [nvarchar](50) NOT NULL,
        [LastName] [nvarchar](50) NOT NULL,
        [PhoneNumber] [nvarchar](20) NOT NULL,
        [City] [nvarchar](50) NOT NULL,
        [State] [nvarchar](50) NOT NULL,
     CONSTRAINT [PK_tblEmails2] PRIMARY KEY CLUSTERED 
    (
        [EmailID] ASC
    )WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
    ) ON [PRIMARY]
    
    GO
    

    要使用它,右键单击SQL Express中的数据库,单击New Query,将上面的内容粘贴到窗口中,然后点击Execute按钮,刷新数据库,你就不应该看到该表。