2012-05-15 44 views
0

我有一個聯繫表格(VS 2010/VB/.net4),當客戶填寫表格時,我收到一封電子郵件 - 我喜歡,但是....如何讓這個asp.net電子郵件轉到數據庫?

例如,這裏有一個電子郵件我:

電子郵件:ivy_league_alum-at-yahoo.com

主題:你們是否整合PPT?

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

將First_Name:蒂姆

姓氏:杜瓦

組織:美國車橋

瀏覽器:Mozilla/5.0(Windows NT的5.1)爲AppleWebKit/535.7(KHTML,例如 壁虎)鍍鉻/ 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。那麼現在我該怎麼做?有人能告訴我什麼我必須添加到代碼,具體地說,或者我必須做什麼,所以我可以有組織地收集這些電子郵件?謝謝!

附錄(我知道這是很長):

具體來說,我的電子郵件代碼:

<%@頁標題= 「聯繫衛生Nutts」 LANGUAGE = 「VB」 的MasterPageFile =」 〜/ Site.master「AutoEventWireup =」false「 CodeFile =」contact.aspx.vb「Inherits =」contact「%> 受保護的子SubmitForm_Click(BYVAL發件人作爲對象,BYVAL e作爲System.EventArgs) 如果不是頁.IsValid Then Exit 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 

從你自己的家裏舒服的工作和工作!

輸入你的郵箱地址:
*爲必填 *請輸入一個有效的電子郵件地址。

主題:
*爲必填

請在下面輸入您的留言: *爲必填


名字:
*爲必填

姓:
*爲必填

電話:
*必填 *請輸入有效的美國電話號碼(包括破折號)。

市:
*爲必填

州/省​​:
*爲必填






您的郵件已發送。感謝您與我們聯繫。
由於技術上的困難,您的郵件可能未發送。 您沒有正確回答反垃圾郵件問題。請返回重試。

+1

你能在數據庫中,而不是分析的電子郵件內容和獲取的值,如果是你的解決方案是直線前進 – Kronass

+0

拉維直接插入表單數據:我沒有嘗試過任何東西,因爲我不是一個程序員。我所做的只是使用一個我上線的表格,與VS 2010 .net4一起...但我沒有嘗試過任何東西。恐怕我的虛擬主機可能會向我收取一個SQL數據庫的費用。我只是困惑。 –

+0

Kronass,我不確定你在說什麼......我不知道。我可以在這裏發佈電子郵件表單的代碼,但可能沒有人會付錢給attn,因爲它太長了。 –

回答

2

不要採取這種錯誤的方式,但你說的是你缺乏編碼能力的判斷是什麼,它可能會制定出更便宜,你得到別人做的工作適合你。有能力的編碼員應該能夠在大約一個小時內爲你敲出一些東西,如果他不停止喝咖啡的話,可能會少一些。

如果你真的想自己做,那麼第一關,你將不得不找出是否託管包裝的網站包括數據庫或沒有。

假設你沒有主辦的網站在本地計算機上,然後有你的機器上一個版本的SQL Express將幫助您開發的代碼,但你將無法部署。

完全無視,雖然,步驟要經過有:

  1. 創建SQL數據庫,然後創建相關的數據庫 表
  2. 創建一個從網站上使用ADO與數據庫的連接淨
  3. 創建的代碼聯繫表格數據插入到數據庫表

然後你需要想想你如何布萊恩g在收集數據後查看數據,因此您要麼必須編寫某些內容或學習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「,單擊」新建查詢「,將上面的內容粘貼到窗口中,然後點擊」執行「按鈕,刷新數據庫,並且不應該看到表格。

+0

哦,我絕對缺乏編碼能力,Hippo。我是一名機器人工程師。但這是一家初創公司,我們沒有錢聘請一名程序員 - 但我懷疑這會是那麼便宜。我使用discountasp.net作爲我的網絡主機....他們允許1個SQL數據庫每月10美元...但感謝您花時間閱讀我的問題,並作出迴應。非常感謝您列出我不得不採取的步驟,承認我不擅長編程。我非常感謝你的幫助! –

+1

我傾向於同意@Kronass對MS Access數據庫可能會更好,但這取決於您的託管服務提供商是否允許您有一個。 –

+0

是的,他們允許MS Access數據庫。 –

2
+0

謝謝Coder - 再次。該電子郵件是在http://www.healthynutts.com/contact.aspx ...我不太瞭解編碼。我在網上找到它。將其更改爲Ajax會讓我感到困惑......但非常感謝您花時間閱讀我的問題並回復它。 –

+0

不客氣。希望能給你一個開始而不是放棄。 – coder

相關問題