ASP.NET 联系表 - 输出到电子邮件并访问数据库

Posted

技术标签:

【中文标题】ASP.NET 联系表 - 输出到电子邮件并访问数据库【英文标题】:ASP.NET Contact Form - output to email and access database 【发布时间】:2009-12-01 17:23:19 【问题描述】:

我是 ASP.NET 的新手,我正在尝试创建一个联系表单,它会在提交时发送电子邮件并将数据存储在数据库中。

我已经阅读了许多教程,并且我对电子邮件设置的基本联系表格非常满意 - 但我在其中的数据库部分遇到了问题。

如果您曾经这样做过,或者您是否可以提供任何有助于我完成这项任务的信息,请告诉我。

我正在运行 ASP.NET 2.0

提前致谢。

【问题讨论】:

目前有代码吗?或者您只是想让我们为您编写整个解决方案的代码? ;-) 这是我当前的 form.aspx:pastie.org/722208 这是我的 Web.config:pastie.org/722213 两者都借助在线教程。我的表格会更高级,但出于测试目的,我将其留在了那里。我真的不知道从哪里开始将表单数据放入数据库。我认为我可以通过提交按钮来做到这一点 - 一个 onclick 动作。我正在学习,所以如果没有为我编写解决方案,我将不胜感激。 更具体地说明我的要求 - 你有什么建议可以让我朝着正确的方向前进,让我的表格在 db 中正常工作? 【参考方案1】:

我对 C# 和 ASP.NET(IT 一年级学生)都很陌生。直到一个月前,我什至从未看过 C# 代码,更不用说用 C# 编写任何东西了。我也一直在梳理互联网以解决这个问题。经过一周的修改一些代码后,我终于弄明白了。下面的代码将允许您创建一个 ASP.NET“联系我们”电子邮件表单,并将表单中的信息发送到 SQL Server 数据库。我希望这可以帮助某人避免我经历过的同样的恶化! (如果有人知道如何更有效地编程,我很想听听你的想法。)

这是附在表格上的 ASPX.CS 文件的代码:

using System;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Net.Mail;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;


public partial class Contact : System.Web.UI.Page

protected void Page_Load(object sender, EventArgs e)




//Code for the Reset event (will reset form data):

protected void Reset(object s, EventArgs e)

    fname.Text = "";
    lname.Text = "";
    email.Text = "";
    phone.Text = "";
    comments.Text = "";


//Code for the SendMail Event; will send email and write info in email into database:

protected void SendMail(object sender, EventArgs e)

    MailMessage mail = new MailMessage();
    mail.From = new MailAddress(email.Text);
    mail.To.Add("EMAIL ADDRESS WHERE YOU'D LIKE THE MESSAGE SENT");
    mail.Subject = "Contact Us";
    mail.IsBodyhtml = true;
    mail.Body += "First Name: " + fname.Text + "<br />";
    mail.Body += "Last Name: " + lname.Text + "<br />";
    mail.Body += "Comments: " + comments.Text + "<br />";
    mail.Body += "Phone Number: " + phone.Text + "<br />";

    SmtpClient smtp = new SmtpClient();
    smtp.Host = "NAME OF SMTP RELAY SERVER";
    smtp.Send(mail);


protected void insertInfo(object sender, EventArgs e)

    SqlConnection myConnection = new SqlConnection             (ConfigurationManager.ConnectionStrings["WEB.CONFIG CONNECTION STRING NAME"].ToString());

    System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand();
    cmd.CommandType = System.Data.CommandType.Text;
    cmd.CommandText = "INSERT INTO TABLE NAME (fname, lname, email, phone, comment)    
VALUES (@fname, @lname, @email, @phone, @comments)";
    cmd.Connection = myConnection;

    cmd.Parameters.Add("@fname", fname.Text);
    cmd.Parameters.Add("@lname", lname.Text);
    cmd.Parameters.Add("@email", email.Text);
    cmd.Parameters.Add("@phone", phone.Text);
    cmd.Parameters.Add("@comments", comments.Text);


    myConnection.Open();
    cmd.ExecuteNonQuery();
    myConnection.Close();



【讨论】:

很好地使用 SQL 插入的参数 :) 但是,我建议您将 mail.IsBodyHtml 设置为等于 false,因为您没有清理那里的输入,然后使用 Environment.NewLine 或"\n\r" 在电子邮件中生成中断。更进一步,您可能希望考虑使用 StringBuilder 来构建消息正文,并使用 AppendLine 方法等方法为您处理所有这些 (msdn.microsoft.com/en-us/library/…)。 感谢您的提示!非常感谢;作为一个新手,我需要我能得到的所有建议。我会听从你的建议。

以上是关于ASP.NET 联系表 - 输出到电子邮件并访问数据库的主要内容,如果未能解决你的问题,请参考以下文章

CSS 基本ASP.net联系表单的CSS(包括全名,电子邮件和消息字段)

循环访问 asp.net 网页上的所有控件

ASP.NET MVC 从另一个表中获取数据并链接在一起

无法在 asp.net vb 网站中发送电子邮件

ASP.NET Web API 2 - 用户注册电子邮件确认失败

ASP.NET C# 电子邮件附件在发送到多个电子邮件地址时最终变为 0 字节