Avatar billede rasmusp Nybegynder
28. december 2000 - 20:15 Der 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\") ?
Avatar billede dalbjerg Nybegynder
28. december 2000 - 20:18 #1
SQL = \"Delete distinct email FROM temp_email where id = 26\"
set maillist = Base.Execute(SQL)

26, skal så bare byttes ud med id\'en for den mail du vil slette
Avatar billede rasmusp Nybegynder
28. december 2000 - 20:26 #2
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.

Kan det gøres sådan?
Avatar billede dalbjerg Nybegynder
28. december 2000 - 20:32 #3
Æhh skal du glemme email adresserne til noget???

æhh giv mig det fra dit script, hvor du afsender dine mails
Avatar billede rasmusp Nybegynder
28. december 2000 - 20:41 #4
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
               
                Response.Write(\"Sender email til: \"&\" \"&maillist(\"email\")&\"<br>\"&vbCrLf)
                Response.Flush()
               
                JMail.ClearRecipients
                JMail.ClearAttachments()
                JMail.Clear()
           
                \' 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

                \' Next we have to add some recipients.
               
                JMail.AddRecipient(maillist(\"email\"))
Avatar billede rasmusp Nybegynder
28. december 2000 - 20:42 #5
glemte at svare på dit spørgsmål:

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.
Avatar billede dalbjerg Nybegynder
28. december 2000 - 20:46 #6
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)
%>
Avatar billede dalbjerg Nybegynder
28. december 2000 - 20:48 #7
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)
Avatar billede rasmusp Nybegynder
28. december 2000 - 20:51 #8
Hmmm, så tror jeg det er bedre at vende tilbage til min egen model. Tror du den vil virke?

\' BEGIN

SQL = \"SELECT distinct email FROM no_news\"
set nonews = Base.Execute(SQL)

SQL = \"Delete from temp_email where email = nonews(\"email\") \"

SQL = \"SELECT distinct email FROM temp_email\"
set maillist = Base.Execute(SQL)

\' END
Avatar billede dalbjerg Nybegynder
28. december 2000 - 20:54 #9
narj...

SQL = \"Delete * from temp_email where email = \" & nonews(\"email\")

æhh således skal den se ud, og der mangler noget do loops. brug min...

Avatar billede rasmusp Nybegynder
28. december 2000 - 21:06 #10
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?
Avatar billede dalbjerg Nybegynder
28. december 2000 - 21:07 #11
jeg melder pas... hvis ikke du kan bruge mit forslag... så må vi håbe en anden hjælper dig
Avatar billede rasmusp Nybegynder
28. december 2000 - 21:11 #12
Ok, tak for dine input.

10 point herfra som tak for indsatsen.

Er der nogle andre der kan hjælpe?
Avatar billede rasmusp Nybegynder
28. december 2000 - 21:12 #13
Hmm, jeg gav dig 10 point men systemet lagde åbenbart 40 oveni hatten... ?! :)
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