Avatar billede Slettet bruger
22. marts 2006 - 14:12 Der er 37 kommentarer og
1 løsning

Send MANGE mails fra en mailform

Min viste mailform

void SendMail(Object Sender, EventArgs E)
{
string strEmailTo, strNyhedsbrev;
strEmailTo = tbEmail.Text;
strNyhedsbrev = tbNyhedsbrev.Text;

System.Web.Mail.MailMessage mailMessage = new System.Web.Mail.MailMessage();
mailMessage.From = "kundeservice@ultimate-web.dk";
mailMessage.Bcc = strEmailTo;
mailMessage.Subject = "Nyhedsbrev fra nordjyskesommerhuse";
mailMessage.BodyFormat = MailFormat.Html;
mailMessage.Body = "<html><body><img src='http://ditvendsyssel.dk/nordjyskesommerhuse.dk/images/banner1.gif'><br><br>" + strNyhedsbrev + "</body></html>" ;

System.Web.Mail.SmtpMail.SmtpServer = "mail.tele.dk";

try {
    System.Web.Mail.SmtpMail.Send(mailMessage);
    Besked.InnerHtml = "Nyhedsbrev udsendt til tilmeldte";
    }
    catch (Exception e)
    {
    Besked.InnerHtml = "Error! Plz try again!";
    }
}
          <form runat="server">
              <div align="center"><br>Email<br>
              <asp:TextBox TextMode="MultiLine" id="tbEmail" Height="100" Width="500" runat="server" /> 
              <br>
            <br>   
            <br>
            Nyhedsbrev<br>
            <asp:TextBox TextMode="MultiLine" id="tbNyhedsbrev" Height="200" Width="500" runat="server" /> 
            <br>
            <br>
            <asp:Button ID="btSend" Text="Send nyhedsbrev" OnClick="SendMail" runat="server"/> 
            <asp:Button ID="btSlet" Text="Slet alt" OnClick="SletAlt" runat="server" />
            <asp:Button ID="btBack" Text="Tilbage" OnClick="GotoSplit" runat="server" /> 
    <br>
  </div>
</form>

sender ubesværet til 2-3-4 modtagere!
men nu er jeg oppe at skulle sende til 260+ modtagere, og DET vil den ikke...
hvordan "narrer" jeg den til det alligevel?
Avatar billede arne_v Ekspert
22. marts 2006 - 14:29 #1
hvilken fejl faar du

et gaet ville vaere at der var restriktion paa antal modtagere paa mail serveren
og at du maaske derfor skulle sende til 100 af gangen
Avatar billede Slettet bruger
22. marts 2006 - 14:31 #2
Den giver mig ingen fejl - men fortæller mig denne: Error! Plz try again!
Avatar billede Slettet bruger
22. marts 2006 - 14:45 #3
Jeg oplever også at sendMail kun kan sende til en 50-100 stykker af gangen.

Det er nok ikke det svar du håber på, men for at få en rimelig skalerbarhed skal du dele din mailudsendelse op i flere bidder, f.eks. ved at sende til en 50-100 stykker ad gangen.


Den ultimartive løsning er asynkron hvor du bruger en database til at gemme din mail, status på udsendelsen o.s.v. og en tråd der starter op hver gang din asp.net process crasher. Denne løsning kan skalere til det uendelige.
Avatar billede Slettet bruger
22. marts 2006 - 14:47 #4
Måden det fungér på er, at jeg henter alle mailadresserne fra databasen over i et multitextfelt og sendet til alle i dette felt. Den asynkrone løsning ville jeg da gerne høre noget mere om...
Avatar billede mikkel_sommer Nybegynder
22. marts 2006 - 16:18 #5
Du kunne jo prøve at starte med at skrive fejlen ud:

Besked.InnerHtml = e.Message;
Avatar billede guidmaster Nybegynder
22. marts 2006 - 23:06 #7
Hvis du bruger en SQL Server 2005 kunne dette måske være noget for dig: http://www.dotnetforum.dk/forums/post/69709.aspx

Hvis du bruger .NET 2.0 vil du få en meget bedre performance ved at skifte fra System.Web.Mail til System.Net.Mail - se evt. http://www.dotnetforum.dk/forums/thread/69767.aspx
Avatar billede Slettet bruger
23. marts 2006 - 08:38 #8
Det er alle sammen gode eksempler, hvis ikke det var fordi at det var i Visual Basic, og jeg programerer i c# ~:/

Besked.InnerHtml = e.Message; <-- Mangler en defination...

System.Net.Mail <-- Gør den også...
Avatar billede dr_chaos Nybegynder
23. marts 2006 - 08:50 #9
Du kan benytte:
http://www.developerfusion.co.uk/utilities/convertvbtocsharp.aspx
Til at konverterer kode fra vb til c#
Avatar billede Slettet bruger
23. marts 2006 - 08:57 #10
Hm ja! Testede eksemplet fra 22/03 17:44! Den gav denne error -

An error occured while processing your code: -- line 3 col 2: invalid StructureMemberDecl -- line 3 col 3: Unknown char(%) which can't be read -- line 3 col 4: Unknown char(@) which can't be read -- line 3 col 48: Unknown char(%) which can't be read -- line 4 col 3: Unknown char(%) which can't be read -- line 4 col 4: Unknown char(@) which can't be read
Avatar billede dr_chaos Nybegynder
23. marts 2006 - 09:12 #11
her er funktionerne:

protected void SendEmail(object sender, EventArgs e)
{
if (IsValid == false) {
return;
}
MailMessage mail = new MailMessage();
string[] stringArr = GetData();
mail.To = Request.Form("to");
mail.From = Request.Form("from");
if (Request.Form("format").Equals("text")) {
  mail.BodyFormat = MailFormat.Text;
} else {
  mail.BodyFormat = MailFormat.Html;
}
int i;
StringBuilder buffer = new StringBuilder();
for (int i = 0; i <= stringArr.Length - 1; i++) {
  if (i != 0) {
    buffer.Append(";");
  }
  buffer.Append(stringArr(i));
}
mail.Bcc = buffer.ToString();
mail.Subject = Request.Form("subject");
mail.Body = Request.Form("body");
try {
  SmtpMail.SmtpServer = "localhost";
  SmtpMail.Send(mail);
} catch (Exception ex) {
  message.Text = "<span style=\"color:red;\">" + ex.Message + "</span>";
return;
}
message.Text = "Message Sent...<br><br><a " + "href=\"SendEmail.aspx\">Go Back</a>";
}

protected string[] GetData()
{
string[] stringArr = new string[3];
stringArr(0) = "youremail1@fakeaddress.com";
stringArr(1) = "youremail2@fakeaddress.com";
stringArr(2) = "youremail3@fakeaddress.com";
return stringArr;
}
Avatar billede dr_chaos Nybegynder
23. marts 2006 - 09:16 #12
kan også prøve med:

void SendMail(Object Sender, EventArgs E)
{
string strEmailTo, strNyhedsbrev;
strEmailTo = tbEmail.Text;
strNyhedsbrev = tbNyhedsbrev.Text;

System.Web.Mail.MailMessage mailMessage = new System.Web.Mail.MailMessage();
mailMessage.From = "kundeservice@ultimate-web.dk";
String[] stringArr = GetData();
StringBuilder buffer = new StringBuilder();
for (int i = 0; i <= stringArr.Length - 1; i++) {
  if (i != 0) {
    buffer.Append(";");
  }
  buffer.Append(stringArr(i));
}
mailMessage.Bcc = buffer.ToString();
mailMessage.Subject = "Nyhedsbrev fra nordjyskesommerhuse";
mailMessage.BodyFormat = MailFormat.Html;
mailMessage.Body = "<html><body><img src='http://ditvendsyssel.dk/nordjyskesommerhuse.dk/images/banner1.gif'><br><br>" + strNyhedsbrev + "</body></html>" ;

System.Web.Mail.SmtpMail.SmtpServer = "mail.tele.dk";

try {
    System.Web.Mail.SmtpMail.Send(mailMessage);
    Besked.InnerHtml = "Nyhedsbrev udsendt til tilmeldte";
    }
    catch (Exception e)
    {
    Besked.InnerHtml = "Error! Plz try again!";
    }
}

protected string[] GetData()
{
string[] stringArr = new string[3];
stringArr(0) = "youremail1@fakeaddress.com";
stringArr(1) = "youremail2@fakeaddress.com";
stringArr(2) = "youremail3@fakeaddress.com";
return stringArr;
}
Avatar billede Slettet bruger
24. marts 2006 - 12:47 #13
CS0118: 'stringArr' angiver 'variabel', hvor 'metode' var forventet
Avatar billede Slettet bruger
24. marts 2006 - 12:47 #14
ups!
CS0118: 'stringArr' angiver 'variabel', hvor 'metode' var forventet

Linje 51:    buffer.Append(";");
Linje 52:  }
Linje 53:  buffer.Append(stringArr(i)); <---- Problemets kerne
Linje 54: }
Linje 55: mailMessage.Bcc = buffer.ToString();
Avatar billede dr_chaos Nybegynder
24. marts 2006 - 12:59 #15
buffer.Append(stringArr[i]);
Avatar billede Slettet bruger
24. marts 2006 - 13:03 #16
CS0118: 'stringArr' angiver 'variabel', hvor 'metode' var forventet

Linje 76: stringArr(0) = "youremail1@fakeaddress.com";

- er dét den rigtige email, forresten?
Avatar billede dr_chaos Nybegynder
24. marts 2006 - 13:12 #17
stringArr[0] = "youremail1@fakeaddress.com";
stringArr[1] = "youremail2@fakeaddress.com";
stringArr[2] = "youremail3@fakeaddress.com";
Det er her du skal angive de email adresser som der skal sendes til.
Avatar billede Slettet bruger
24. marts 2006 - 13:14 #18
Skal jeg skrive 263+ emailadresser?!?
Avatar billede dr_chaos Nybegynder
24. marts 2006 - 13:29 #19
Du henter dem jo ud på en eller anden måde og så tilføjer du dem i et for loop eller lignende.
Hvordan henter du dem ud ?
Avatar billede Slettet bruger
24. marts 2006 - 13:37 #20
Henter fra databasen-

OleDbConnection OurConnection;
OleDbCommand OurCommand;
OleDbDataReader OurDataReader;       
OurConnection = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+Server.MapPath("../database/ns.mdb")+";");           
OurConnection.Open();
OurCommand = new OleDbCommand("SELECT mail FROM huse ORDER BY mail", OurConnection);
OurDataReader = OurCommand.ExecuteReader();

while(OurDataReader.Read())
{
    tbEmail.Text += OurDataReader["mail"].ToString() + "; ";
}
OurConnection.Close();
OurDataReader.Close();

Sender til alle mailadresser i tbEmail.Text

string strEmailTo;
strEmailTo = tbEmail.Text;
System.Web.Mail.MailMessage mailMessage = new System.Web.Mail.MailMessage();
mailMessage.Bcc = strEmailTo;
Avatar billede Slettet bruger
28. marts 2006 - 09:59 #21
Prøvede med denne metode

stringArr[0] = tbEmail.Text;
stringArr[1] = tbEmail.Text;
stringArr[2] = tbEmail.Text;

men det virkede heller ikke så godt ~:[
Avatar billede dr_chaos Nybegynder
28. marts 2006 - 10:01 #22
hvad skriver du ind i tekst boksen ?
Avatar billede Slettet bruger
28. marts 2006 - 10:02 #23
Ingenting! Den henter alle e-mails fra databasen OnPageLoad.
Avatar billede dr_chaos Nybegynder
28. marts 2006 - 10:06 #24
hvordan ser den streng ud du modtager fra databasen ?
Avatar billede dr_chaos Nybegynder
28. marts 2006 - 10:06 #25
eller hvor gemmer du de emails fra databasen
og hvad står der i tbEmail.Text ?
Avatar billede Slettet bruger
28. marts 2006 - 10:10 #26
Henter fra databasen-

OleDbConnection OurConnection;
OleDbCommand OurCommand;
OleDbDataReader OurDataReader;       
OurConnection = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+Server.MapPath("../database/ns.mdb")+";");           
OurConnection.Open();
OurCommand = new OleDbCommand("SELECT mail FROM huse ORDER BY mail", OurConnection);
OurDataReader = OurCommand.ExecuteReader();

while(OurDataReader.Read())
{
    tbEmail.Text += OurDataReader["mail"].ToString() + "; ";
}
OurConnection.Close();
OurDataReader.Close();

Sender til alle mailadresser i tbEmail.Text

string strEmailTo;
strEmailTo = tbEmail.Text;
System.Web.Mail.MailMessage mailMessage = new System.Web.Mail.MailMessage();
mailMessage.Bcc = strEmailTo;

Hver emailadresse er afskildt af et ";" tbEmail.  Scriptet fungere udemærket med 3-4 emails, men når det er så mange er det lige som det "kløjs" i dem ~;]
Avatar billede dr_chaos Nybegynder
28. marts 2006 - 10:14 #27
prøv med
stringArr = tbEmail.Text.Split(';');
Avatar billede dr_chaos Nybegynder
28. marts 2006 - 10:15 #28
hvis det ikke virker så paste lige hele din codebehind
Avatar billede Slettet bruger
28. marts 2006 - 10:33 #29
Nix! Sendte dem ikke... ~:[

<%@ Page Language="C#" ContentType="text/html" debug="true"  %>
<%@ Import NameSpace="System.Web.Mail" %>
<%@ import namespace="System.IO"%>
<%@ import namespace="System.Data"%>
<%@ import namespace="System.Data.OleDb"%>
<link href="../style/ns.css" rel="stylesheet" type="text/css">
<html>
<head>
<title>Nordjyskesommerhuse.dk</title>
<link href="style/ns.css" rel="stylesheet" type="text/css">
<script runat="server">
void Page_Load(Object Sender, EventArgs E) {

    if (Session["login"]!="Godkendt")
        {
        Response.Redirect("../default.aspx");
            }
       
           
if (!IsPostBack)
{
OleDbConnection OurConnection;
OleDbCommand OurCommand;
OleDbDataReader OurDataReader;       
OurConnection = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+Server.MapPath("../database/ns.mdb")+";");           
OurConnection.Open();
OurCommand = new OleDbCommand("SELECT mail FROM huse ORDER BY mail", OurConnection);
OurDataReader = OurCommand.ExecuteReader();

while(OurDataReader.Read())
{
    tbEmail.Text += OurDataReader["mail"].ToString() + "; ";
}
OurConnection.Close();
OurDataReader.Close();           
    }
}

void SendMail(Object Sender, EventArgs E)
{
string strEmailTo, strNyhedsbrev;
strEmailTo = tbEmail.Text;
strNyhedsbrev = tbNyhedsbrev.Text;

System.Web.Mail.MailMessage mailMessage = new System.Web.Mail.MailMessage();
mailMessage.From = "kundeservice@ultimate-web.dk";
String[] stringArr = GetData();
StringBuilder buffer = new StringBuilder();
for (int i = 0; i <= stringArr.Length - 1; i++) {
  if (i != 0) {
    buffer.Append(";");
  }
  buffer.Append(stringArr[i]);
}
mailMessage.Bcc = buffer.ToString();
mailMessage.Subject = "Nyhedsbrev fra nordjyskesommerhuse";
mailMessage.BodyFormat = MailFormat.Html;
mailMessage.Body = "<html><body><img src='http://ditvendsyssel.dk/nordjyskesommerhuse.dk/images/banner1.gif'><br><br>" + strNyhedsbrev + "</body></html>" ;

System.Web.Mail.SmtpMail.SmtpServer = "mail.tele.dk";

try {
    System.Web.Mail.SmtpMail.Send(mailMessage);
    Besked.InnerHtml = "Nyhedsbrev udsendt til tilmeldte";
    }
    catch (Exception e)
    {
    Besked.InnerHtml = "Error! Plz try again!";
    }
}

protected string[] GetData()
{
string[] stringArr;
stringArr = tbEmail.Text.Split(';');
return stringArr;
}void SletAlt(Object Sender, EventArgs E)
{
tbNyhedsbrev.Text = "";
}
void GotoSplit (Object sender, EventArgs e){
    Response.Redirect("split.aspx");
    }

</script>
<form runat="server">
<asp:TextBox TextMode="MultiLine" id="tbEmail" Height="100" Width="500" runat="server" /> 
<br>
<br>   
<br>
Nyhedsbrev<br>
<asp:TextBox TextMode="MultiLine" id="tbNyhedsbrev" Height="200" Width="500" runat="server" /> 
<br>
<br>
<asp:Button ID="btSend" Text="Send nyhedsbrev" OnClick="SendMail" runat="server"/> 
<asp:Button ID="btSlet" Text="Slet alt" OnClick="SletAlt" runat="server" />
<asp:Button ID="btBack" Text="Tilbage" OnClick="GotoSplit" runat="server" /> 
    <br>
  </div>
</form>
Avatar billede Slettet bruger
29. marts 2006 - 09:50 #30
Giver ikke rigtig nogen fejlmeddelse, men sender ingen mails, da jeg får beskeden "Error! Plz try again!" ~:|
Avatar billede dr_chaos Nybegynder
29. marts 2006 - 18:46 #31
erstat :

try {
    System.Web.Mail.SmtpMail.Send(mailMessage);
    Besked.InnerHtml = "Nyhedsbrev udsendt til tilmeldte";
    }
    catch (Exception e)
    {
    Besked.InnerHtml = "Error! Plz try again!";
    }
}

med


try {
    System.Web.Mail.SmtpMail.Send(mailMessage);
    Besked.InnerHtml = "Nyhedsbrev udsendt til tilmeldte";
    }
    catch (Exception e)
    {
    Besked.InnerHtml = e.ToString();
    }
}
Avatar billede dr_chaos Nybegynder
29. marts 2006 - 18:46 #32
bare for at se evt fejlmedelelse
Avatar billede Slettet bruger
30. marts 2006 - 08:23 #33
System.Web.HttpException: Det var ikke muligt at få adgang til objektet 'CDO.Message'. ---> System.Reflection.TargetInvocationException: Destinationen for en aktivering udløste en undtagelse. ---> System.Runtime.InteropServices.COMException (0x8004020F): Serveren afviste en eller flere modtageradresser. Serversvaret var: 550 : Recipient address rejected: Domain not found --- Slut på staksporing af indre undtagelser --- at System.RuntimeType.InvokeDispMethod(String name, BindingFlags invokeAttr, Object target, Object[] args, Boolean[] byrefModifiers, Int32 culture, String[] namedParameters) at System.RuntimeType.InvokeMember(String name, BindingFlags invokeAttr, Binder binder, Object target, Object[] args, ParameterModifier[] modifiers, CultureInfo culture, String[] namedParameters) at System.Web.Mail.LateBoundAccessHelper.CallMethod(Object obj, String methodName, Object[] args) --- Slut på staksporing af indre undtagelser --- at System.Web.Mail.LateBoundAccessHelper.CallMethod(Object obj, String methodName, Object[] args) at System.Web.Mail.CdoSysHelper.Send(MailMessage message) at System.Web.Mail.SmtpMail.Send(MailMessage message) at ASP.nyhedsbrev_aspx.SendMail(Object Sender, EventArgs E) in:line 63

(line 63) System.Web.Mail.SmtpMail.Send(mailMessage);
Avatar billede dr_chaos Nybegynder
30. marts 2006 - 17:34 #34
Tyder på de mail adresser du forsøger at sende til ikke er tilladte eller at den mail adresse du forsøger at sende fra er ugyldig
Avatar billede Slettet bruger
30. marts 2006 - 20:30 #35
Tvivler på at dén jeg mailadresse jeg sender fra er ugyldig da jeg har sendt fra den før (3 stk), så det må være fordi den støder på én mail adresse som er ugyldig og stopper dér. Der må være en metode til at få den til at springe over og gå vidre med resten...
Avatar billede Slettet bruger
03. juli 2006 - 21:40 #36
Har været væk fra programering og eksperten.dk i RIGTIG lang tid. Derfor er dette spørgsmål ikke blevet besvaret endnu (sry) ;-/

Vil egentlig helst tildele dr chaos pointene - så smid et svar, ellers tager jeg dem selv i den sidste ende...

~:]
Avatar billede dr_chaos Nybegynder
04. juli 2006 - 08:25 #37
svar :)
Avatar billede Slettet bruger
04. juli 2006 - 16:04 #38
Bedre sent end aldrig ~;]
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

IT-JOB