Avatar billede newbie.dk Praktikant
31. marts 2004 - 21:52 Der er 18 kommentarer og
4 løsninger

Afsende nyhedsbrev/mail til mange ud fra en liste fra database

Jeg vil gerne sende en mail ud til alle i en database(150-200 stk).
Men hvad skal jeg bruge? Kan det laves på en enkelt måde, som er lige til at gå til. Kan man lave det med en slags log så man kan se om alle har fået tilsendt mailen(en slags tjek af scriptet)
Ved ikke hvad der kan have betydning i denne forbindelse, men det håber jeg I kan hjælpe med.

Jeg har brugt denne i andre sammenhæng, måske kan man bruge lidt ud fra den.

Set Mailer = Server.CreateObject("SMTPsvg.Mailer")
Mailer.RemoteHost = "xxx.xxx.dk"
Mailer.FromName = Request.QueryString("navn")
Mailer.FromAddress = Request.QueryString("mail")
Mailer.AddRecipient "mail@mail.dk"
Mailer.Subject = "Nyhedsbrev"
Mailer.BodyText = "Hej bla bla"
Mailer.CharSet = 2

if not Mailer.SendMail then
  Response.Write " er ikke sendt...<br>"
  Response.Write Mailer.Response
else
  Response.Write " er sendt"
end if

Set Mailer = nothing


Jeg regner med at det hele skal kunne afvikles fra siden, men ved ikke hvordan det skal laves, opbygges og gøres nemt/smart.
Avatar billede espersen Novice
31. marts 2004 - 22:14 #1
Hvis du er hosted ude i byen kan der nemt være begrænsninger på antallet af mails du sender fra din side, hvis du benytter eget script (har jeg set)

Ofte følger der en mailinglist med i et webhotel...
Avatar billede -master-d- Nybegynder
31. marts 2004 - 22:14 #2
Du skal lave noget lign. dette.

<%
sql = "SELECT mail, navn FROM tabel" 'dette skal du lige ændre til den rigtige sql.
set rs = Conn.Execute(sql)

if not (rs.bof or rs.eof) then
do while not rs.eof
Set Mailer = Server.CreateObject("SMTPsvg.Mailer")
Mailer.RemoteHost = "xxx.xxx.dk"

Mailer.FromName = rs("navn")
Mailer.FromAddress = rs("mail")
Mailer.AddRecipient "mail@mail.dk"
Mailer.Subject = "Nyhedsbrev"
Mailer.BodyText = "Hej bla bla"
Mailer.CharSet = 2

if not Mailer.SendMail then
  Response.Write " er ikke sendt til: "& rs("mail") &"<br>"
  Response.Write Mailer.Response
end if

Set Mailer = nothing
rs.movenext
loop
end if
%>

Så looper den igennem alle dine tilmeldte brugere og udskriver dem som ikke blev afsendt
Avatar billede newbie.dk Praktikant
31. marts 2004 - 22:44 #3
Okay, den ser jo meget simpel ud, det var lækkert. Selv jeg kan næsten se mig ud af den ;)
Jeg vil prøve at teste(på nogle få mails) den i morgen og se hvad der sker ved fejl mm. (skal ind og se fodbold igen)

Men sådan en kode hedder den så "mailinglist"?

Hvad kan man ellers lave af sjove ting til sådan en mailinglist?

Kan det passe jeg har læst noget om at det før har hænt at hver 21. mail ikke blev sendt? Kan ikke lige huske i hvilken forbindelse jeg læste det, og til hvilket sprog.
Avatar billede -master-d- Nybegynder
31. marts 2004 - 22:45 #4
Jeg har ikke hørt det før og kender derfor ikke årsagen til at hver 21. mail ikke bliver sendt, men du kan sikkert finde det på google.
Avatar billede newbie.dk Praktikant
31. marts 2004 - 22:50 #5
Lige kort, fodbold er lige startet.

Det tyder på det var Jmail, http://www.eksperten.dk/spm/129422 ved ikke om det gælder andre.
Avatar billede -master-d- Nybegynder
31. marts 2004 - 22:56 #6
ok, tak for oplysningen.
Avatar billede newbie.dk Praktikant
01. april 2004 - 20:42 #7
Det virker ikke lige som det skal.

Mailer.AddRecipient "mail@mail.dk" 
Det er denne adr. mailen skal sendes til. Altså tages fra databasen.
Jeg har prøvet med Mailer.AddRecipient rs("mail") men det virker ikke.
Avatar billede -master-d- Nybegynder
01. april 2004 - 20:45 #8
Sorry, min fejl. virker denne ikke?

<%
sql = "SELECT mail, navn FROM tabel" 'dette skal du lige ændre til den rigtige sql.
set rs = Conn.Execute(sql)

if not (rs.bof or rs.eof) then
do while not rs.eof
Set Mailer = Server.CreateObject("SMTPsvg.Mailer")
Mailer.RemoteHost = "xxx.xxx.dk"

Mailer.FromName = rs("navn")
Mailer.FromAddress = "kontakt@mail.dk"
Mailer.AddRecipient rs("mail")
Mailer.Subject = "Nyhedsbrev"
Mailer.BodyText = "Hej bla bla"
Mailer.CharSet = 2

if not Mailer.SendMail then
  Response.Write " er ikke sendt til: "& rs("mail") &"<br>"
  Response.Write Mailer.Response
end if

Set Mailer = nothing
rs.movenext
loop
end if
%>
Avatar billede newbie.dk Praktikant
01. april 2004 - 21:01 #9
Det har jeg prøvet. Jeg får denne fejl

Microsoft VBScript runtime error '800a01c2'

Wrong number of arguments or invalid property assignment: 'AddRecipient'
Avatar billede -master-d- Nybegynder
01. april 2004 - 21:06 #10
Hedder dit felt i databasen mail?
Avatar billede newbie.dk Praktikant
01. april 2004 - 21:08 #11
Godt hedder det email, men det er ændret alle steder.
Avatar billede -master-d- Nybegynder
01. april 2004 - 21:23 #12
har du husket at oprette forbindelsen til databasen (Conn.Open osv.) ??
Avatar billede newbie.dk Praktikant
01. april 2004 - 22:02 #13
Jep. Det gør jeg med denne:
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath("../mailliste.mdb")
Conn.Open DSN

Det sjove er at den første du lavede, sendte en mail til mail@mail.dk og da denne mail ikke er i brug fik jeg en mail retur til Mailer.FromAddress = rs("email") med en leveringsfejl. Så vi skal bare lige have lavet Mailer.AddRecipient rs("email") helt rigtigt. Jeg kan ikke se hvor.
Avatar billede -master-d- Nybegynder
01. april 2004 - 22:06 #14
Jeg fandt faktisk lige det script som du søger, prøv at kigge på denne artikel.

http://www.html.dk/scripts/asp/00003/
Avatar billede newbie.dk Praktikant
01. april 2004 - 22:44 #15
Okay. Den virker.
Men
1. får jeg ikke besked om de mails der ikke er sendt
2. sender kun én mail. Det vil sige at alle i databasen står til To:-feltet, det må den ikke.
3. jeg sender til den samme mail to gange, men får kun én mail(bare for at teste mængden)
Avatar billede -master-d- Nybegynder
01. april 2004 - 22:58 #16
Det hele skal nok se sådan her ud så..

<%
sql = "SELECT email FROM tabel" 'dette skal du lige ændre til den rigtige sql.
set rs = Conn.Execute(sql)

if not (rs.bof or rs.eof) then
do while not rs.eof
Set Mailer = Server.CreateObject("SMTPsvg.Mailer")
Mailer.RemoteHost = "xxx.xxx.dk"

Mailer.FromName = "Dit navn her"
Mailer.FromAddress = "xxx@xxx.dk"
Mailer.AddRecipient rs("email")
Mailer.Subject = "Nyhedsbrev"
Mailer.BodyText = "Hej bla bla"
Mailer.CharSet = 2

if not Mailer.SendMail then
  Response.Write " er ikke sendt til: "& rs("mail") &"<br>"
  Response.Write Mailer.Response
end if

Set Mailer = nothing
rs.movenext
loop
end if
%>

Evt. hvad giver den af fejl her?
Avatar billede newbie.dk Praktikant
01. april 2004 - 23:17 #17
Jeg får denne fejl:

Microsoft VBScript runtime error '800a01c2'

Wrong number of arguments or invalid property assignment: 'AddRecipient'

mail.asp, line 29



Her er hele kode:

<%
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath("../mailliste.mdb")
Conn.Open DSN


sql = "SELECT email FROM mailliste"
set rs = Conn.Execute(sql)

if not (rs.bof or rs.eof) then
do while not rs.eof
Set Mailer = Server.CreateObject("SMTPsvg.Mailer")
Mailer.RemoteHost = "xxx.xxx.dk"

Mailer.FromName = "Dit navn her"
Mailer.FromAddress = "xxx@xxx.dk"
Mailer.AddRecipient rs("email")        <- line 29
Mailer.Subject = "Nyhedsbrev"
Mailer.BodyText = "Hej bla bla"
Mailer.CharSet = 2

if not Mailer.SendMail then
  Response.Write " er ikke sendt til: "& rs("email") &"<br>"
  Response.Write Mailer.Response
end if

Set Mailer = nothing
rs.movenext
loop
end if

' Luk databaseforbindelse
Conn.Close
Set Conn = Nothing
%>
Avatar billede newbie.dk Praktikant
03. april 2004 - 12:13 #18
Kan det ikke komme til at virke?
Lukker når dagen er omme.
Avatar billede -master-d- Nybegynder
03. april 2004 - 12:30 #19
Prøv med denne her.
<%
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath("../mailliste.mdb")
Conn.Open DSN


sql = "SELECT email FROM mailliste"
set rs = Conn.Execute(sql)

if not (rs.bof or rs.eof) then
do while not rs.eof
Set Mailer = Server.CreateObject("SMTPsvg.Mailer")
Mailer.RemoteHost = "xxx.xxx.dk"

Mailer.FromName = "Dit navn her"
Mailer.FromAddress = "xxx@xxx.dk"
Mailer.AddRecipient "et navn her", rs("email")
Mailer.Subject = "Nyhedsbrev"
Mailer.BodyText = "Hej bla bla"
Mailer.CharSet = 2

if not Mailer.SendMail then
  Response.Write " er ikke sendt til: "& rs("email") &"<br>"
  Response.Write Mailer.Response
end if

Set Mailer = nothing
rs.movenext
loop
end if

' Luk databaseforbindelse
Conn.Close
Set Conn = Nothing
%>
Avatar billede newbie.dk Praktikant
04. april 2004 - 00:21 #20
Nu har jeg lige prøvet nogle små tests. Det ser ud til at virke. Tester lige lidt mere imorgen. Og så får vi afsluttet dette.
Avatar billede newbie.dk Praktikant
04. april 2004 - 13:30 #21
Fint. Det virker som det skal.
Takker.
Avatar billede -master-d- Nybegynder
04. april 2004 - 13:40 #22
Det var så lidt.
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
Kurser inden for grundlæggende programmering

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