Как отправить значение полей базы данных в теле письма
у меня есть таблица событий
я хочу отправить информацию о событии в теле электронной почты
он не работает и отображает ошибку :
Object reference not set to an instance of an object
Что я уже пробовал:
protected void send(object sender, EventArgs e) { studentDataContext dx = new studentDataContext(); s_event eve = new s_event(); int st = Convert.ToInt16((Request.QueryString["e_id"])); var log = (from s in dx.s_events where s.e_id == st select new { s }).FirstOrDefault(); foreach (GridViewRow row in GridView1.Rows) { if (row.RowType == DataControlRowType.DataRow) { if ((row.FindControl("CheckBox1") as CheckBox).Checked) { string name = row.Cells[0].Text; string email = row.Cells[1].Text; MailMessage mail = new MailMessage(); mail.To.Add(email); mail.From = new MailAddress("mymail@gmail.com"); mail.Subject = "Event Details"; mail.Body = log.s.e_name; mail.IsBodyHtml = true; SmtpClient smtp = new SmtpClient(); smtp.Host = "smtp.gmail.com"; smtp.Credentials = new System.Net.NetworkCredential("mymail@gmail.com", "password"); smtp.EnableSsl = true; smtp.Port = 587; smtp.Send(mail); } } } }
Richard MacCutchan
Вы используете переменную, которая не была инициализирована. Посмотрите на строку кода, где происходит ошибка.
Member 13809843
ошибка находится в строке
почте.Тело=лог.С. e_name;
но я уже извлек табличные данные в переменной log
Richard MacCutchan
Вам нужно использовать отладчик, чтобы узнать, какая переменная является нулевой. Здесь никто не может догадаться.