Avatar billede tinaw25 Nybegynder
23. oktober 2013 - 11:56 Der er 8 kommentarer og
1 løsning

Sende email efter data indsat i databasen?

Hej

Hvordan får man sendt en email til når data er indsat i databasen??

protected void SendMail()
    {

        SqlConnection conn = new SqlConnection();
        conn.ConnectionString = ConfigurationManager.ConnectionStrings["ConnectionString"].ToString();

        SqlCommand cmd = new SqlCommand();
        cmd.Connection = conn;
        cmd.CommandText = "SELECT * FROM ordre_linie";
       

      //Create instance of MailMessage Class
            MailMessage msg = new MailMessage();
            //Assign From mail address
            msg.From = new MailAddress("tinaw251@gmail.com");
           
            msg.To.Add(new MailAddress("tinaw251@gmail.com"));
           
            msg.Subject = "Ordre fra bruger";
           
            msg.Body = "Ordre indeholder";

            msg.Body += ordre_linie;
           
            msg.IsBodyHtml = true;
           
            SmtpClient SmtpServer = new SmtpClient();
           
            SmtpServer.Host = "smtp.gmail.com";
           
            SmtpServer.Port = 587;
           
            SmtpServer.Credentials = new System.Net.NetworkCredential("tinaw251@gmail.com", "xxxx");
           
            SmtpServer.EnableSsl = true;
           
            SmtpServer.Send(msg);
    }
Avatar billede anri Novice
23. oktober 2013 - 12:29 #1
Hvis du ikke poster den fejl du får, så må vi jo gætte os til problemet.

Jeg har en funktion der ser således ud.:

try
{
  string lErrorMailMsg = "[Besked]";
  using (MailMessage mail = new MailMessage())
  {
    mail.To.Add("[Modtager]");
    mail.From = new MailAddress("[Afsender]");
    mail.Subject = "[Emne]";
    mail.Body = lErrorMailMsg;
    using (SmtpClient smtp = new SmtpClient())
    {
      smtp.Host = "[SMTP server]";
      smtp.DeliveryMethod = SmtpDeliveryMethod.Network;
      smtp.Credentials = new System.Net.NetworkCredential("[Brugernavn]", "[Adgangskode]");
      smtp.Send(mail);
    }
  }
}
catch
{
}
Avatar billede tinaw25 Nybegynder
23. oktober 2013 - 12:33 #2
Jeg får ingen fejl, den skriver kun de her ting i den mail jeg får

msg.Subject = "Ordre fra bruger";
           
msg.Body = "Ordre indeholder";

Jeg vil godt have indholdet fra min database sendt med i min email
Avatar billede anri Novice
23. oktober 2013 - 20:09 #3
Men det er jo også fordi du førsøger at sætte en System.Data.DataRow  ind i body.
Husk nu på at skelne imellem de forskellige datatyper.
Avatar billede tinaw25 Nybegynder
23. oktober 2013 - 20:16 #4
Lige nu har jeg fået den til at sende mig en mail med

Ordre id også kommer den med System.Collections.Generic.List`1[ValgtFrugt]
Avatar billede anri Novice
23. oktober 2013 - 20:33 #5
Netop. Du forsøger at konvertere en System.Collections.Generic.List til en streng.

du skal nok lave noget lignende body += ValgtFrugt.FrugtNavn, men jeg ved ikke hvordan objekterne i din liste ser ud.
Avatar billede tinaw25 Nybegynder
23. oktober 2013 - 20:36 #6
Lige nu har jeg prøvet det her

DataTable dtAll = new DataTable();
            dtAll = dataTable.Copy();
            dtAll.Merge(dataTable1, true);
            dtAll.Merge(dataTable2, true);

         
            conn.Open();
            string body = "";


            body += cmd.Parameters["@fk_ordre"].Value = orderId;
         


            foreach (DataRow row in dtAll.Rows)
            {
                cmd.CommandText = @"INSERT INTO ordre_linie
                                (fk_ordre_id, antal, navn, fk_kurve_id)
                                VALUES (@fk_ordre, @Antal, @navn, @kurv)";

                cmd.Parameters["@Antal"].Value = row["Antal"];
                cmd.Parameters["@navn"].Value = row["Navn"];
                cmd.Parameters["@kurv"].Value = 1;


                body += cmd.Parameters["@Antal"].Value = row["Antal"];
                body += cmd.Parameters["@navn"].Value = row["Navn"];
                body += cmd.Parameters["@kurv"].Value = 1;



                //now set up the mail settings
                MailMessage message = new MailMessage();
                message.From = new MailAddress("tinaw25@gmail.com");
                //can add more recipient
                message.To.Add(new MailAddress("tinaw25@gmail.com"));

                //add cc

                message.Subject = "This is my subject";
                message.Body = body;
                SmtpClient client = new SmtpClient();

                client.Host = "smtp.gmail.com";

                client.Port = 587;

                client.Credentials = new System.Net.NetworkCredential("tinaw25@gmail.com", "18072009");

                client.EnableSsl = true;

                client.Send(message);
               
               
               
               
                cmd.ExecuteNonQuery();
            }
           

            conn.Close();
            Session.Clear();
            Session.Abandon();
            Session.RemoveAll();

Men så får jeg 3 emails
Avatar billede anri Novice
23. oktober 2013 - 20:39 #7
Ja det er jo fordi du har hele din sende-mekanisme inde i din løkke.

Du skal jo blot generere din body inde i løkken.
Avatar billede tinaw25 Nybegynder
23. oktober 2013 - 20:46 #8
Argh selvfølgelig :-)

Takker nu virker det, smid et svar
Avatar billede anri Novice
23. oktober 2013 - 21:42 #9
yep
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester