Avatar billede mvk Nybegynder
07. februar 2005 - 11:02 Der er 2 kommentarer og
1 løsning

Jmail script - kan man springe email adresser over

jeg har lavet et script der sender til en lang række modtagere af et nyhedsbrev - problemet er at flere af brugerne er oprettet mere end 1 gang. Under forudsætning at jeg sorterer og sender mails i alfabetisk rækkefølge - er der så nogen måde jeg kan springe brugere over så de ikke modtager 2 mails ?

script:
<%@LANGUAGE="VBSCRIPT"%>
<%Server.Scripttimeout=3600%>
<!--#include file="../../Connections/scandlines.asp" -->
<%
'finde ud at hvor den nåede til:
dim LastID
LastID = Request.Querystring("LastID")
if LastID = "" then LastID = 0

dim Taeller
Taeller = Request.Querystring("Taeller")
if Taeller = "" then Taeller = 0

Dim rsNyhedsbrev
Dim rsNyhedsbrev_numRows
Set rsNyhedsbrev = Server.CreateObject("ADODB.Recordset")
rsNyhedsbrev.ActiveConnection = MM_scandlines_STRING
rsNyhedsbrev.Source = "SELECT *  FROM BorderShopNyhedsbrev  ORDER BY IDnyhedsbreve DESC"
rsNyhedsbrev.CursorType = 0
rsNyhedsbrev.CursorLocation = 2
rsNyhedsbrev.LockType = 1
rsNyhedsbrev.Open()
rsNyhedsbrev_numRows = 0

    Overskrift    = (rsNyhedsbrev.Fields.Item("Overskrift").Value)
    Tekst        = (rsNyhedsbrev.Fields.Item("Tekst").Value)

Dim rsEmails
Dim rsEmails_numRows
Set rsEmails = Server.CreateObject("ADODB.Recordset")
rsEmails.ActiveConnection = MM_scandlines_STRING
rsEmails.Source = "SELECT * FROM BorderShop WHERE IDbordershop  > " & LastID & " ORDER BY IDbordershop ASC LIMIT 0, 50"
rsEmails.CursorType = 0
rsEmails.CursorLocation = 2
rsEmails.LockType = 1
rsEmails.Open()
rsEmails_numRows = 0

Dim rsAntalModtagere
Dim rsAntalModtagere_numRows
Set rsAntalModtagere = Server.CreateObject("ADODB.Recordset")
rsAntalModtagere.ActiveConnection = MM_scandlines_STRING
rsAntalModtagere.Source = "SELECT Count(*) AS AntalMails  FROM BorderShop"
rsAntalModtagere.CursorType = 0
rsAntalModtagere.CursorLocation = 2
rsAntalModtagere.LockType = 1
rsAntalModtagere.Open()
rsAntalModtagere_numRows = 0

  ' Denne tæller har en total på det antal modtagere der er i databasen
  AntalMailAdresser = (rsAntalModtagere.Fields.Item("AntalMails").Value)


'Så bliver loopet sådan
if (rsEmails.BOF or rsEmails.EOF) then

'    Response.Write ("Slut")
    scriptdone = "ja"

else

  Response.write "<font class=""12BlackBold"">Emails<br><br></font>"
  on error resume next
  Do While Not rsEmails.EOF

        strEmail = (rsEmails.Fields.Item("Email").Value)
        strNavn  = (rsEmails.Fields.Item("Fornavn").Value)
        Set JMail              = Server.CreateObject("JMail.SMTPMail")
        JMail.ServerAddress     = "websmtp.border-wines.dk;websmtp.border-wines.dk;mailrelay.andersenit.dk"
        JMail.Sender            = "admin@border-wines.dk"
        JMail.SenderName          = "Border Shop"
        JMail.ContentType      = "text/html"
        JMail.Subject          = Overskrift
        JMail.AddRecipientBCC    strEmail
        JMail.Priority          = 3
        JMail.AddHeader        "Originating-IP", Request.ServerVariables("REMOTE_ADDR")
        Jmail.Body              = replace(Tekst, "ModtagerensNavn", strNavn)
        JMail.Execute
        Set JMail = Nothing

      Response.write "<font class=""10BlackNormal"">E-mail sendt til " & strEmail & " " & strNavn & "<br></font>"
      LastID = rsEmails("IDbordershop")
      Taeller = Taeller + 1
      rsEmails.Movenext
  Loop
    scriptdone = "nej"
End if

if Taeller = "" or Taeller = "0" then beregnprocent = "1" else beregnprocent = Taeller end if
loadet = FormatNumber(cint(beregnprocent) * 100 / cint(AntalMailAdresser) ,0)
%>
<html>
    <head>
        <title>Afsendelse af Border Shop nyhedsbrev</title>
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
        <link href="../include/stylesheet.css" rel="stylesheet" type="text/css">
    </head>
<body style="margin: 0px; padding: 0px;"><center>
<table  border="0" cellspacing="0" cellpadding="0">
  <tr class="10BlackNormal">
    <td height="20" colspan="2">&nbsp;</td>
  </tr>
  <tr class="10BlackNormal">
    <td colspan="2" class="12BlackBold">Afsendelse af nyhedsbrev </td>
  </tr>
  <tr class="10BlackNormal">
    <td width="200" height="20">&nbsp;</td>
    <td>&nbsp;</td>
  </tr>
  <tr class="10BlackNormal">
    <td height="20">Nyhedsbrev:</td>
    <td><%=(rsNyhedsbrev.Fields.Item("Overskrift").Value)%></td>
  </tr>
  <tr class="10BlackNormal">
    <td height="20">Antal modtagere: </td>
    <td>nyhedsbrev tabel: <%=(rsNyhedsbrev.Fields.Item("Modtagere").Value)%><br>
      beregning fra SQL udtr&aelig;k <%=AntalMailAdresser%></td>
  </tr>
  <tr class="10BlackNormal">
    <td height="20">&nbsp;</td>
    <td>&nbsp;</td>
  </tr>
  <tr class="10BlackNormal">
    <td height="20">Antal procent sendt:</td>
    <td><%=loadet%>%</td>
  </tr>
  <tr class="10BlackNormal">
    <td height="20">Loading bar: </td>
    <td><img src="../../images/admin/precent.gif" width="<%=loadet%>" height="10" border="0"></td>
  </tr>
  <tr class="10BlackNormal">
    <td height="20">Hvor langt scriptet er kommet:  </td>
    <td><%=Taeller%></td>
  </tr>
  <tr class="10BlackNormal">
    <td height="20">&nbsp;</td>
    <td>&nbsp;</td>
  </tr>
  <tr class="10BlackNormal">
    <td height="20">&nbsp;</td>
    <td>N&aring;r nyhedsbrevet er sendt til alle modtagerne kan
    du <br>
    klikke p&aring; knappen herunder  for at komme til oversigten.</td>
  </tr>
  <tr class="10BlackNormal">
    <td height="20">&nbsp;</td>
    <td><form name="form1" method="post" action="oversigt_nyhedsbrev.asp">
      <input name="Submit" type="submit" class="buttons" value="G&aring; til oversigt" style="cursor:pointer">
    </form></td>
  </tr>
</table>
</center>
</body>
</html>
<%if scriptdone <> "ja" then%>
        <script language="javascript">
            window.location = "script_nyhedsbrev.asp?LastID=<%=LastID%>&Taeller=<%=Taeller%>";
        </script>
<%end if%>

<%
    rsEmails.close
    Set rsEmails = Nothing
   
    rsNyhedsbrev.Close()
    Set rsNyhedsbrev = Nothing
   
    rsAntalModtagere.Close()
    Set rsAntalModtagere = Nothing
%>
Avatar billede cpufan Juniormester
07. februar 2005 - 11:06 #1
select distinct, så tager den en selvom der er flere af den samme
Avatar billede The Real Yoda Juniormester
07. februar 2005 - 12:30 #2
hvis du har sorteret på emailadresserne.. vil 2 ens mailadresser jo stå efter hinanden..

så er det bare at sige

email=""

Do While Not rsEmails.EOF


        strEmail = (rsEmails.Fields.Item("Email").Value)
        strNavn  = (rsEmails.Fields.Item("Fornavn").Value)

        if email<>strEmail then
        email=strEmail

        Set JMail              = Server.CreateObject("JMail.SMTPMail")
        JMail.ServerAddress    = "websmtp.border-wines.dk;websmtp.border-wines.dk;mailrelay.andersenit.dk"
        JMail.Sender            = "admin@border-wines.dk"
        JMail.SenderName          = "Border Shop"
        JMail.ContentType      = "text/html"
        JMail.Subject          = Overskrift
        JMail.AddRecipientBCC    strEmail
        JMail.Priority          = 3
        JMail.AddHeader        "Originating-IP", Request.ServerVariables("REMOTE_ADDR")
        Jmail.Body              = replace(Tekst, "ModtagerensNavn", strNavn)
        JMail.Execute
        Set JMail = Nothing

      Response.write "<font class=""10BlackNormal"">E-mail sendt til " & strEmail & " " & strNavn & "<br></font>"

      end if

      LastID = rsEmails("IDbordershop")
      Taeller = Taeller + 1
      rsEmails.Movenext
  Loop

så vil den inden den sender, checke om det er den samme emailadresse som den, den lige har sendt til ..
Avatar billede mvk Nybegynder
16. marts 2005 - 09:23 #3
jeg endte med at lave et script der sletter alle dubletter i databasen i stedet.

<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<%Server.Scripttimeout=3600%>
<!--#include file="../../Connections/scandlines.asp" -->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<style type="text/css">
body
{
font-family: verdana;
font-size: 10pt;
font-weight: normal;
color: #000000;
text-decoration: none;
}
</style>
<%
'response.write("<strong>Scriptet kører</strong>")
'response.write("<br><br>Det kan tage noget tid før det er færdigt alt efter hvor mange emails der ligger i databasen.")
response.write("<br><br>...")
Set rs = Server.CreateObject("ADODB.Recordset")
rs.ActiveConnection = MM_scandlines_STRING

'Laver lige loopie i basen...
rs.open("SELECT Email, IDbordershop FROM BorderShop GROUP BY Email ORDER BY Email ASC")
        on error resume next
        while not rs.eof 
            Set rs2 = Server.CreateObject("ADODB.Recordset")
                rs2.ActiveConnection = MM_scandlines_STRING

                'slet alle dubletter!
                sql2 = "DELETE FROM BorderShop WHERE IDbordershop <> " & rs("IDbordershop") & " and Email = '" & rs("Email") & "'"
                rs2.open(sql2)
'                response.write(sql2 & "<br>")

            'Tjekker om rs2 er åben. Hvis ja, så lukker den rs2           
            if rs2.state <> 0 then
                rs2.close
                Set rs2 = Nothing
            end if
            rs.movenext 
        wend
rs.Close
Set rs = Nothing

response.write("<br><br><strong>Scriptet har kørt succesfuldt</strong>")
response.write("<br><br><a href=# onClick=history.go(-1)>Tilbage til forrige side</a>")
%>
<title>Content Management System</title>
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