我正在開發一個Web應用程序,爲用戶提供簡短的測驗。系統將檢查由QuizID和IsSent列組成的數據庫中的Quiz表。如何在發送電子郵件後更新'IsSent'列的值?
如果IsSent列(位數據類型)的值爲0(false),系統會將測驗發送給所有用戶。如果它有1,則表示測驗已經發送。
我可以讓應用程序發送電子郵件,但現在我希望系統在發送電子郵件後將IsSent的值更新爲1或true,但我不知道該怎麼做。
誰能告訴我該怎麼做?
我的代碼:
protected void Page_Load(object sender, EventArgs e)
{
SendEmailTOAllUser();
}
protected void SendEmail(string toAddress, string fromAddress, string MailSubject, string MessageBody, bool isBodyHtml)
{
SmtpClient sc = new SmtpClient("SMTP (MAIL) ADDRESS");
try
{
MailMessage msg = new MailMessage();
msg.From = new MailAddress("[email protected]", "OUR SYSTEM");
msg.To.Add(toAddress);
msg.Subject = MailSubject;
msg.Body = MessageBody;
msg.IsBodyHtml = isBodyHtml;
//Response.Write(msg);
sc.Send(msg);
}
catch (Exception ex)
{
throw ex;
}
}
protected void SendEmailTOAllUser()
{
string connString = "Data Source=localhost\\sqlexpress;Initial Catalog=psspTest;Integrated Security=True";
string cmdText = "SELECT QuizID, IsSent FROM dbo.QUIZ";
string cmdText2 = "SELECT Username FROM dbo.employee";
Collection<string> emailAddresses = new Collection<string>();
string link = "";
string body = "";
using (SqlConnection conn = new SqlConnection(connString))
{
conn.Open();
// Open DB connection.
using (SqlCommand cmd = new SqlCommand(cmdText, conn))
{
SqlDataReader reader = cmd.ExecuteReader();
if (reader != null)
{
while (reader.Read())
{
if (!(bool)reader["IsSent"])
{
string quizid = reader["QuizID"].ToString();
link = "<a href='http://pmv/pssp/StartQuiz.aspx?testid=" + quizid + "'> Click here to participate </a>";
body = @"<b> Please try to participate in the new short safety quiz </b>"
+ link +
@"<br /> <br />
This email was generated using the <a href='http://pmv/pssp/Default.aspx'>PMOD Safety Services Portal </a>.
Please do not reply to this email.
";
}
}
}
reader.Close();
}
using (SqlCommand cmd = new SqlCommand(cmdText2, conn))
{
SqlDataReader reader = cmd.ExecuteReader();
if (reader != null)
{
while (reader.Read())
{
string emailTo = reader["Username"].ToString();
string receiverEmail = emailTo + "@gmail.com";
emailAddresses.Add(receiverEmail);
}
}
reader.Close();
}
conn.Close();
}
foreach (string email in emailAddresses)
{
SendEmail(email, "", "Notification Email Subject", body, true);
}
}
感謝您的幫助。我收到了一個錯誤:在郵件頭中發現無效字符:'@',我不知道如何解決它。有任何幫助嗎? – user1093651 2012-01-01 05:18:12
對不起,代碼中有錯誤,我更新了答案。你需要將'if(sbEmailAddresses.Length == 0)'改爲'if(sbEmailAddresses.Length!= 0)'。我還進行了更新,以確保在將數據添加到地址列表之前從數據庫中讀取名稱。 – 2012-01-01 05:50:58
非常感謝您的幫助。我可以弄明白。我在你的代碼中改了一點點。老兄,謝謝。你實際上拯救了我的生命,但現在我面臨着你的代碼的另一個問題。問題是:我想要系統檢查測驗表是否有多於未發送給用戶的測驗。我希望系統只發送這些測驗中的第一個,而不是全部或最後創建的測驗。怎麼做? – user1093651 2012-01-01 06:17:40