28. december 2000 - 20:15Der er
12 kommentarer og 1 løsning
Fjern fra mailingliste
Hej!
Jeg har lavet en mailingliste hvor jeg selecter modtagerne fra min brugerdatabase således:
SQL = \"SELECT distinct email FROM temp_email\" set maillist = Base.Execute(SQL)
Nu er der nogle brugere der gerne vil frameldes, men listen bliver genereret (i tabellen \"temp_email\") hver gang jeg sender til den kan jeg ikke bare framelde folk.
Hvad gør man? Laver en ny tabel hvori man indsætter alle de e-mail adresser som ikke ønsker at modtage e-mails? Hvis ja, hvordan fjerner jeg så disse e-mail adresser fra ovenstående maillist(\"email\") ?
Skal jeg bruge SQL = \"Delete distinct email FROM temp_email where id = 26\" set maillist = Base.Execute(SQL)
istedet for
SQL = \"SELECT distinct email FROM temp_email\" set maillist = Base.Execute(SQL)
?
Hvis jeg skal bruge DELETE istedet for SELECT, kan jeg så godt bruge maillist(\"email\") bagefter til at hive mail adresserne ud eller skal jeg lave en ny SELECT?
Og: jeg kender jo ikke id\'en jeg vil slette. Jeg havde forestillet mig at lave en \"no_news\" tabel hvori jeg smider alle de e-mail adresser som skal pilles ud af min maillist(\"email\") hver gang jeg sender et nyhedsbrev, og noget i denne stil:
SQL = \"SELECT distinct email FROM no_news\" set nonews = Base.Execute(SQL)
Delete from temp_email where email = nonews(\"email\")
SQL = \"SELECT distinct email FROM temp_email\" set maillist = Base.Execute(SQL)
og så sender til alle maillist(\"email\") som jeg plejer at gøre.
Kommer her - håber ikke det ser alt for rodet ud efter jeg har \"pastet\" ind i ekspertens form felt:
set JMail = Server.CreateOBject( \"JMail.Message\" ) if Request(\"send_til\") <> \"test\" Then set maillist = Base.Execute(SQL) counter = 0 \'on error resume next do while not maillist.eof if maillist(\"email\") <> \"\" Then
\' Set logging to true to ease any potential debugging \' And set silent to true as we wish to handle our errors ourself JMail.Logging = false JMail.silent = true
\' Most mailservers require a valid email address \' for the sender
ja, jeg skal gemme email adresserne på de folk som ikke ønsker at modtage e-mails fremover, da de også skal pilles ud af modtagerlisten ved fremtidige nyhedsbreve jeg sender.
så skal du blot havde et script, som poster alle formen ud... og laver et link til eks. slet...
Altså således: <% SQL = \"SELECT distinct email FROM temp_email\" set maillist = Base.Execute(SQL)
do while not maillist.eof%> <a href=\"slet.asp?id=<%= maillist(\"id\") %>\"><%= maillist(\"email\") %></a> <%maillist.movenext loop%>
og så skal slet se således ud: <% id = request.form(\"id\") SQL = \"delete * email FROM temp_email where id = \" & request(\"id\") set maillist = Base.Execute(SQL) %>
Men hvis de er pillet helt ud af databasen, som det oven over gør... Så vil de slette ikke forefindes i databasen, og altså vil de heller ikke være på fremtidige nyhedsbreve, som du sender ud... De er pist væk... og kan ikke fremkaldes igen... Dette er en ulempe, hvis du vil bruge email adresserne, senere til at sende MEGA MEGET VIGTIGE NYHEDSBREVE ud :o)
Dit eksempel er ikke helt hvad jeg mener er mest hensigtsmæssigt. Jeg mener det klart nemmeste vil være at gøre det rent via asp/sql på den side hvor jeg selecter adresserne som jeg skal sende nyhedsbrev til.
Kan man ikke via en SQL statement bede serveren om at lave en select disctinct fra temp_email tabellen where email <> fra alle rows i no_news tabellen?
Hmm, jeg gav dig 10 point men systemet lagde åbenbart 40 oveni hatten... ?! :)
Synes godt om
Ny brugerNybegynder
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.