I thought of this solution when I was developing a website, and I was testing the contact us page. It was supposed to send an email with the details the user filled. But the emails were always late. So I created a table in the database of the application and saved the sent data there. There are 3 main advantages to this approach. First its much more reliable than email. Second, you get the sent information instantly. And third, you can design a page for the administrators to list and summarize the sent information as they please.

So here is the database table:

Field Name Data Type Allow Null Description
FeedbackID Int No An auto incrementing primary key
UserID uniqueidentifier No Provider key used by ASP.NET's security
SendingDate smalldatetime Yes
Subject nvarchar(100) Yes
Details nvarchar(500) Yes

/****** Create Statement For Object: Table [dbo].[ContactUs] ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[ContactUs](
	[FeedbackID] [int] IDENTITY(1,1) NOT NULL,
	[UserID] [uniqueidentifier] NULL,
	[SendingDate] [smalldatetime] NULL,
	[Subject] [nvarchar](100) COLLATE Arabic_CI_AS NULL,
	[Details] [nvarchar](500) COLLATE Arabic_CI_AS NULL,
 CONSTRAINT [PK_ContactUs] PRIMARY KEY CLUSTERED 
(
	[FeedbackID] ASC
)WITH (PAD_INDEX  = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]


No code is needed for the contact us page or the administrator's page, because they can be done with a Form View and a Grid control respectively.