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!";
}
}
}
EemissionMedlem sedan dec. 19996 721 inlägg 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();
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!";
}
}
}
}
EemissionMedlem sedan dec. 19996 721 inlägg [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.
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!";
}
}
}
}
EemissionMedlem sedan dec. 19996 721 inlägg Nej, du skulle inte ändra den nedre delen, utan bara se till att DataTable-instansen skapades inne i GetEmails, före Fill-metoden.