---
title: "Mail"
type: "forum-thread"
url: "https://www.webforum.nu/amne/dotnet/157521-mail/page2"
topic: ".NET"
topic_url: "https://www.webforum.nu/amne/dotnet"
author: "smileenergy"
published: "2007-02-24T15:09:36.000Z"
updated: "2007-02-25T22:47:32.000Z"
replies: 25
views: 1052
page: 2
pages: 2
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/dotnet/157521-mail"
---

# Mail

_Sida 2 av 2._

## #21 — smileenergy, 2007-02-25T18:16Z

hmm, nu får jag inga fel längre men den verkar inte vilja "binda" några epostadresser för varken i label1 visas det några epostadresser eller i om jag väljer att skicka det så det verkar inte riktigt som att det blev rätt ändå.

```
using System;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Net.Mail;

public partial class Admin_Newsletter : System.Web.UI.Page
{

    //databaskoppling
    private string strCon = @"....";
    private DataTable dtEmail = new DataTable();
    

    protected void Page_Load(object sender, EventArgs e)
    {
        GetEmail();
        Label1.Text = Convert.ToString(dtEmail);
    }
    protected void btnSend_Click(object sender, EventArgs e)
    {
        if (txtMail.Text == "")
        {
            lblStatus.Text = "Du måste skriva ett mail innan du kan skicka det!";
        }
        else
        {
            
            SendMail();
        }
    }

    protected void GetEmail()
    {
        SqlConnection cnn = new SqlConnection();
        try
        {
            cnn.ConnectionString = strCon;
            SqlCommand cmd = new SqlCommand();
            cmd.CommandText = "SELECT email FROM Member WHERE inactive = 0 AND newsletter=1";
            //lagra i commadoject
            cmd.Connection = cnn;
            //skapa en data adapter
            SqlDataAdapter da = new SqlDataAdapter();
            //Koppla dataadaptern till commando objektet
            da.SelectCommand = cmd;
            da.Fill(dtEmail);
        }
        catch (System.Exception ex)
        {
            lblStatus.Text = "Något gick fel (" + ex.Message + ")";
        }
    }

    protected void SendMail()
    {
        //create the mail message
        MailMessage mail = new MailMessage();

        //set the addresses
        mail.From = new MailAddress("info@minsida.se");
        foreach (DataRow row in dtEmail.Rows)
        {
            mail.Bcc.Add(row["email"].ToString());
        }

        //set the content
        mail.Subject = "Nyhetsbrev.";
        mail.Body = txtMail.Text;

        //send the message
        try
        {
            SmtpClient smtp = new SmtpClient("smtprelay1.telia.com");
            smtp.Send(mail);
        }
        catch (System.Exception ex)
        {
            lblStatus.Text = "Något gick fel (" + ex.Message + ")";
        }
        finally
        {
            lblStatus.Text = "Ditt mail har skickats!";
        }
    }
}
```

Permalänk: https://www.webforum.nu/p/1940502

## #22 — emission, 2007-02-25T19:13Z

En DataTable innehåller många rader, så du kan inte binda den till en Label och hoppas att få ut något vettigt. 

Gör om GetEmail till en metod som returnerar tabellen och anropa den inne i SendMail.

```
protected void SendMail()
{
   DataTable dtEmails=GetEmails();
   if (dtEmails.Rows.Count>0)
   { 
       MailMessage mail = new MailMessage();
```

Permalänk: https://www.webforum.nu/p/1940514

## #23 — smileenergy, 2007-02-25T20:03Z

Vad har jag missat nu ? får upp att dtEmail är en variabel men används som en metod?

```
using System;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Net.Mail;

public partial class Admin_Newsletter : System.Web.UI.Page
{

    //databaskoppling
    private string strCon = @"....";

    

    protected void Page_Load(object sender, EventArgs e)
    {

    }
    protected void btnSend_Click(object sender, EventArgs e)
    {
        if (txtMail.Text == "")
        {
            lblStatus.Text = "Du måste skriva ett mail innan du kan skicka det!";
        }
        else
        { 
            SendMail();
        }
    }

    protected void GetEmail(DataTable dtEmail)
    {
        SqlConnection cnn = new SqlConnection();
        try
        {
            cnn.ConnectionString = strCon;
            SqlCommand cmd = new SqlCommand();
            cmd.CommandText = "SELECT email FROM Member WHERE inactive = 0 AND newsletter=1";
            //lagra i commadoject
            cmd.Connection = cnn;
            //skapa en data adapter
            SqlDataAdapter da = new SqlDataAdapter();
            //Koppla dataadaptern till commando objektet
            da.SelectCommand = cmd;
            da.Fill(dtEmail);
            return dtEmail;
        }
        catch (System.Exception ex)
        {
            lblStatus.Text = "Något gick fel (" + ex.Message + ")";
        }
    }

    protected void SendMail()
    {
        DataTable dtEmails=GetEmails();
        if (dtEmails.Rows.Count > 0)
        {
            //create the mail message
            MailMessage mail = new MailMessage();

            //set the addresses
            mail.From = new MailAddress("info@minsida.se");
            foreach (DataRow row in dtEmail.Rows)
            {
                mail.Bcc.Add(row["email"].ToString());
            }

            //set the content
            mail.Subject = "Nyhetsbrev.";
            mail.Body = txtMail.Text;

            //send the message
            try
            {
                SmtpClient smtp = new SmtpClient("smtprelay1.telia.com");
                smtp.Send(mail);
            }
            catch (System.Exception ex)
            {
                lblStatus.Text = "Något gick fel (" + ex.Message + ")";
            }
            finally
            {
                lblStatus.Text = "Ditt mail har skickats!";
            }
        }
    }
}
```

Permalänk: https://www.webforum.nu/p/1940530

## #24 — emission, 2007-02-25T21:16Z

```
[b]private DataTable[/b] GetEmail[b]s[/b](
```

```
[b]DataTable dtEmail=new DataTable();[/b]
da.Fill(dtEmail);
```

Och rent designmässigt bör inte en funktion hantera exceptions genom att sätta lblStatus.Text. Lägg den try-catchen i SendMail i stället.

Permalänk: https://www.webforum.nu/p/1940562

## #25 — smileenergy, 2007-02-25T22:12Z

ursäkta om jag är lite dum just nu men jag får inte det här att fungera :(

```
using System;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Net.Mail;

public partial class Admin_Newsletter : System.Web.UI.Page
{

    //databaskoppling
    private string strCon = @".....";

    

    protected void Page_Load(object sender, EventArgs e)
    {

    }
    protected void btnSend_Click(object sender, EventArgs e)
    {
        if (txtMail.Text == "")
        {
            lblStatus.Text = "Du måste skriva ett mail innan du kan skicka det!";
        }
        else
        { 
            SendMail();
        }
    }

    private DataTable GetEmails()
    {
        SqlConnection cnn = new SqlConnection();
        try
        {
            cnn.ConnectionString = strCon;
            SqlCommand cmd = new SqlCommand();
            cmd.CommandText = "SELECT email FROM Member WHERE inactive = 0 AND newsletter=1";
            //lagra i commadoject
            cmd.Connection = cnn;
            //skapa en data adapter
            SqlDataAdapter da = new SqlDataAdapter();
            //Koppla dataadaptern till commando objektet
            da.SelectCommand = cmd;
            return dtEmail;
        }
        catch (System.Exception ex)
        {
            lblStatus.Text = "Något gick fel (" + ex.Message + ")";
        }
    }

    protected void SendMail()
    {
        DataTable dtEmail = new DataTable();
        da.Fill(dtEmail);
        if (dtEmail.Rows.Count > 0)
        {
            //create the mail message
            MailMessage mail = new MailMessage();

            //set the addresses
            mail.From = new MailAddress("info@minsida.se");
            foreach (DataRow row in dtEmail.Rows)
            {
                mail.Bcc.Add(row["email"].ToString());
            }

            //set the content
            mail.Subject = "Nyhetsbrev.";
            mail.Body = txtMail.Text;

            //send the message
            try
            {
                SmtpClient smtp = new SmtpClient("smtprelay1.telia.com");
                smtp.Send(mail);
            }
            catch (System.Exception ex)
            {
                lblStatus.Text = "Något gick fel (" + ex.Message + ")";
            }
            finally
            {
                lblStatus.Text = "Ditt mail har skickats!";
            }
        }
    }
}
```

Permalänk: https://www.webforum.nu/p/1940577

## #26 — emission, 2007-02-25T22:47Z

Nej, du skulle inte ändra den nedre delen, utan bara se till att DataTable-instansen skapades inne i GetEmails, före Fill-metoden.

Permalänk: https://www.webforum.nu/p/1940589

---

Tråden på webben: https://www.webforum.nu/amne/dotnet/157521-mail/page2  
Föregående sida: https://www.webforum.nu/amne/dotnet/157521-mail.md
