Member 13809843 Ответов: 1

Как отправить значение полей базы данных в теле письма


у меня есть таблица событий
я хочу отправить информацию о событии в теле электронной почты
он не работает и отображает ошибку :
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

Вам нужно использовать отладчик, чтобы узнать, какая переменная является нулевой. Здесь никто не может догадаться.

1 Ответов

Рейтинг:
0

Faaiz Shabbir

1.

var log = (from s in dx.s_events
                 where s.e_id == st
                 select new { s }).FirstOrDefault();

там может не быть никаких записей, доступных против вашего удостоверения личности.

2.
int st = Convert.ToInt16((Request.QueryString["e_id"]));

Проверьте, получаете ли вы здесь допустимые значения.
3.
mail.Body = log.s.e_name;

Проверьте, не является ли" log.s " нулевым.


Member 13809843

1.записи доступны с определенным идентификатором
2.получено действительное значение
3.еще журнал.s равно null
есть ли какие-то проблемы с запросом??

Faaiz Shabbir

проверьте свой класс модели, инициализирован ли этот объект или нет.