Avatar billede andersasp Nybegynder
30. maj 2002 - 12:31 Der er 26 kommentarer og
1 løsning

Reminder på email

Hejsa eksperter!

Jeg er ved at lave en fuktion der sender mails ud på et bestemt tidspunkt! denne fuktion skal arbejde sammen med en database der har følgende felter:

send      = hvilken dato mailen skal sendes på
tidsp      = hvilket tidspunkt mailen skal sendes på
kommentar  = indhold i mailen

hvordan kan man med enten aspmail eller jmail få den til at sende på en bestem dato??  jeg har ledt overalt på nettet for at finde en løsning - men er stadig helt blank.. håber der er nogle der kan hjælpe da jeg skal bruge denne fuktion til min afgangseksamen
Avatar billede medions Nybegynder
30. maj 2002 - 12:35 #1
If Date() = "14-09-02" Then
JMail kode
End If

//>Rune
Avatar billede kimiwan Nybegynder
30. maj 2002 - 12:37 #2
Du skal lave en scheduled task (kontrolpanel->scheduled task) og køre dit script der tjekker og sender de mails ud, der skal sendes ud nu.

Husk at markere i databasen om mails er blevet sendt ud, så du ikke sender til den samme person to gange.
Avatar billede medions Nybegynder
30. maj 2002 - 12:38 #3
hvis fx. det er en præcis dato

If Day(Date()) = Day(" & objRs("send") & ") And Month(" & objRs("send") & ")  Then
Set JMail = Server.CreateObject("JMail.SMTPMail")
JMail.ContentType = "text/html"
JMail.ServerAddress = "mail.domain.dk"
JMail.Priority = 1
JMail.Sender = "afsender@email.adr"
JMail.AddRecipientEx "modtager@email.adr", "Modtagers navn"
Jmail.AddRecipientCC "andenmodtager@email.adr"
Jmail.AddRecipientBCC "skjultmodtager@email.adr"
JMail.Subject = "Dette er emne linien.."
JMail.Body = objRs("kommentar")
JMail.Execute
Set JMail = Nothing
End If

//>Rune
Avatar billede benson Nybegynder
30. maj 2002 - 12:38 #4
andersasp> Det kræver jo at du har en service kørende på serveren der hele tiden tjekker din database for forekomster af aktuel dato og aktuel tidspunkt. Og hvis du har valgfrit tidspunkt, så skal den jo tjekke hvert minut !
Avatar billede andersasp Nybegynder
30. maj 2002 - 13:08 #5
den funktion der checkker databasen, kan det være en asp komponent?? der hele tiden laver et loop??
Avatar billede benson Nybegynder
30. maj 2002 - 13:10 #6
Ja det kan det godt, det kræver bare at du eksekvere et URL til asp siden hvert interval !
http://server.dk/tidstjek.asp

Så kan du vel lave det så siden lukker sig selv efter gennemløb !
Avatar billede andersasp Nybegynder
30. maj 2002 - 13:16 #7
Jeg er stadig desværre lidt rusten i mail, men hvis jeg har et script der sender mailen - kan der så indsættes yderligere kode således den hele tiden checkker og sender mails hvis tidspunktet passer!

Jeg bruger nedenstående kode:

-------------------------------------------------------------
<%@LANGUAGE="VBSCRIPT"%>
<%

'        --> Her hentes felter fra form siden
'
        Body = vbCrLf & vbTab & "´reminder" &_
        vbCrLf & vbTab & "kommentar : " & Request.Form("kommentar") &_
        vbCrLf & vbTab & "att : " & Request.Form("tidsp")
       
        Set JMail = Server.CreateObject("JMail.SMTPMail")

       
        JMail.ServerAddress = "websmtp.server.dk"
   
        ' mail config settings
        JMail.Charset = "iso-8859-1"
        JMail.ContentTransferEncoding = "8bit"
       
        JMail.Sender = "mail@mail.dk"
        JMail.SenderName = "reminder"
        JMail.Subject = request("tidsp")
       
       
        JMail.AddRecipient "anders@smz.dk"

       
       
       
        JMail.Body = Body
       
        ' 1 - highest priority (Urgent)
        ' 3 - normal
        ' 5 - lowest
       
        JMail.Priority = 1
       
       
       
        ' Send it...
       
        on error resume next
       
        JMail.execute
       
        if err <> 0 then %>
<p>Der er opstået en fejl, kontakt webmasteren....
  <%
        end if    
       
        set JMail = nothing

       
        conn.close

        ' ---------------------------------------------------------------
        ' send email SLUT
        ' ---------------------------------------------------------------
        %>
        Response.redirect "../index.asp"   
        %>
</p>
--------------------------------------------------------------
Avatar billede benson Nybegynder
30. maj 2002 - 13:20 #8
Jo men det har medions været inde på !
Avatar billede medions Nybegynder
30. maj 2002 - 13:22 #9
Er det sådan her du vil ha' det:

-------------------------------------------------------------
<%@LANGUAGE="VBSCRIPT"%>
<%

'        --> Her hentes felter fra form siden
'
        Body = vbCrLf & vbTab & "´reminder" &_
        vbCrLf & vbTab & "kommentar : " & Request.Form("kommentar") &_
        vbCrLf & vbTab & "att : " & Request.Form("tidsp")
       
        If Day(Date()) = Day(" & objRs("send") & ") And Month(" & objRs("send") & ")  Then
       
        Set JMail = Server.CreateObject("JMail.SMTPMail")
            JMail.ServerAddress = "websmtp.server.dk"
            ' mail config settings
            JMail.Charset = "iso-8859-1"
            JMail.ContentTransferEncoding = "8bit"
                JMail.Sender = "mail@mail.dk"
                JMail.SenderName = "reminder"
                JMail.Subject = request("tidsp")
            JMail.AddRecipient "anders@smz.dk"
            JMail.Body = Body
        ' 1 - highest priority (Urgent)
        ' 3 - normal
        ' 5 - lowest
        JMail.Priority = 1
        ' Send it...
        On Error Resume Next       
        JMail.execute       
        if err <> 0 then
            Response.Write("Der er opstået en fejl, kontakt webmasteren.... ")
        end if   
        set JMail = nothing
       
        conn.close
End If
        ' ---------------------------------------------------------------
        ' send email SLUT
        ' ---------------------------------------------------------------
        %>
        Response.redirect "../index.asp"   
        %>
</p>
--------------------------------------------------------------

//>Rune
Avatar billede andersasp Nybegynder
30. maj 2002 - 13:25 #10
ville det så se nogenlunde således ud??  men så laver den da ikke et loop går den??

<%@LANGUAGE="VBSCRIPT"%>
<%

' her ville jeg kalde databasen'

If Day(Date()) = Day(" & objRs("send") & ") And Month(" & objRs("send") & ")  Then
Set JMail = Server.CreateObject("JMail.SMTPMail")
JMail.ContentType = "text/html"
JMail.ServerAddress = "mail.domain.dk"
JMail.Priority = 1
JMail.Sender = "afsender@email.adr"
JMail.AddRecipientEx "modtager@email.adr", "Modtagers navn"
Jmail.AddRecipientCC "andenmodtager@email.adr"
Jmail.AddRecipientBCC "skjultmodtager@email.adr"
JMail.Subject = "Dette er emne linien.."
JMail.Body = objRs("kommentar")
JMail.Execute
Set JMail = Nothing
End If
%>
Avatar billede medions Nybegynder
30. maj 2002 - 13:27 #11
Jamen vil du have den til at sende en mail til alle dem i databasen eller hvad er det du vil?

//>Rune
Avatar billede medions Nybegynder
30. maj 2002 - 13:31 #12
Denne løber alle dine records igennem fra databasen på den bestemte dato!
Husk lige at rette denne til mht. Databasenavn og SQL query!

-------------------------------------------------------------
<%@LANGUAGE="VBSCRIPT"%>
<%

'        --> Her hentes felter fra form siden
'
        Body = vbCrLf & vbTab & "´reminder" &_
        vbCrLf & vbTab & "kommentar : " & Request.Form("kommentar") &_
        vbCrLf & vbTab & "att : " & Request.Form("tidsp")
       
        If Day(Date()) = Day(" & objRs("send") & ") And Month(" & objRs("send") & ")  Then
        Set objConn = Server.CreateObject("ADODB.Connection")
        objConn.Open "Driver={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("db.mdb")
        strSQL = "SELECT * FROM tabel"
        Set objRs = objConn.Execute(strSQL)
            While Not objRs.EOF
                Set JMail = Server.CreateObject("JMail.SMTPMail")
                    JMail.ServerAddress = "websmtp.server.dk"
                    ' mail config settings
                    JMail.Charset = "iso-8859-1"
                    JMail.ContentTransferEncoding = "8bit"
                        JMail.Sender = "mail@mail.dk"
                        JMail.SenderName = "reminder"
                        JMail.Subject = request("tidsp")
                    JMail.AddRecipient "anders@smz.dk"
                    JMail.Body = Body
                ' 1 - highest priority (Urgent)
                ' 3 - normal
                ' 5 - lowest
                JMail.Priority = 1
                ' Send it...
                On Error Resume Next       
                JMail.execute       
                if err <> 0 then
                    Response.Write("Der er opstået en fejl, kontakt webmasteren.... ")
                end if   
                set JMail = nothing
            objRs.MoveNext()
            Wend
        End If
       
        conn.close
        ' ---------------------------------------------------------------
        ' send email SLUT
        ' ---------------------------------------------------------------
        %>
        Response.redirect "../index.asp"   
        %>
</p>
--------------------------------------------------------------

//>Rune
Avatar billede andersasp Nybegynder
30. maj 2002 - 13:36 #13
I må lige undskylde hvis jeg ikke har formuleret mig særlig forståeligt!

Men det den skal gøre er at, sende en mail til mig på bestemte tidspunkter:

30-05-2002  -  skal sendes idag
31-05-2002  -  skal sendes imorgen
osv.

det skal dog være således at hvis jeg vælger at skrive en email idag og udfylder "send" til at være 01-01-2004 skal mailen automatisk sendes d. 01-01-2002
Avatar billede andersasp Nybegynder
30. maj 2002 - 13:36 #14
skal selvfølgelig sendes 01-01-2004 - sorry
Avatar billede medions Nybegynder
30. maj 2002 - 13:43 #15
-------------------------------------------------------------
<%@LANGUAGE="VBSCRIPT"%>
<%

'        --> Her hentes felter fra form siden
'
        Set objConn = Server.CreateObject("ADODB.Connection")
        objConn.Open "Driver={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("db.mdb")
        strSQL = "SELECT * FROM tabel"
        Set objRsSend = objConn.Execute(strSQL)
       
        Body = vbCrLf & vbTab & "´reminder" &_
        vbCrLf & vbTab & "kommentar : " & Request.Form("kommentar") &_
        vbCrLf & vbTab & "att : " & Request.Form("tidsp")
       
        If Day(Date()) = Day(" & objRsSend("send") & ") And Month(" & objRs("send") & ")  Then
        strSQL = "SELECT * FROM tabel WHERE send=#" & objRsSend("send") & "#"
        Set objRsSend = objConn.Execute(strSQL)
                Set JMail = Server.CreateObject("JMail.SMTPMail")
                    JMail.ServerAddress = "websmtp.server.dk"
                    ' mail config settings
                    JMail.Charset = "iso-8859-1"
                    JMail.ContentTransferEncoding = "8bit"
                        JMail.Sender = "mail@mail.dk"
                        JMail.SenderName = "reminder"
                        JMail.Subject = request("tidsp")
                    JMail.AddRecipient "anders@smz.dk"
                    JMail.Body = Body
                ' 1 - highest priority (Urgent)
                ' 3 - normal
                ' 5 - lowest
                JMail.Priority = 1
                ' Send it...
                On Error Resume Next       
                JMail.execute       
                if err <> 0 then
                    Response.Write("Der er opstået en fejl, kontakt webmasteren.... ")
                end if   
                set JMail = nothing
        End If
       
        conn.close
        ' ---------------------------------------------------------------
        ' send email SLUT
        ' ---------------------------------------------------------------
        %>
        Response.redirect "../index.asp"   
        %>
</p>
--------------------------------------------------------------

//>Rune
Avatar billede benson Nybegynder
30. maj 2002 - 13:50 #16
medions > jeps du er inde på det rigtige. MEn er det ikke indholdet fra database recorden der skal sendes. Og ikke form indholdet. Jeg kan i det hele taget ikke se hvad formen har med det at gøre. Den skal vel bare gemme indholdet i DB'en med en dato, tidspunkt og tekstindhold !

Scriptet skal finde de mails der skal sendes !
Så din sql string er korrekt, mailindholdet er ikke !

Eller hvad andersasp ??

;-)
Avatar billede medions Nybegynder
30. maj 2002 - 14:02 #17
Well, jeg ved ik' rigtig hvad det er  han vil... Han må lige prøve at forklare lidt nærmere...!

benson> Tak for oprydningen *G*
//>Rune
Avatar billede andersasp Nybegynder
30. maj 2002 - 14:21 #18
Sorry - det er mig er tåger! alle request.form objecter skal fjernes - således den kun kigger i databasen frem for formen! det den egentlig bare skal gøre er at kigge i databasen, ognår datoen skal den sende mailen afsten!
Avatar billede medions Nybegynder
30. maj 2002 - 14:35 #19
så skulle dette gerne virke:

-------------------------------------------------------------
<%@LANGUAGE="VBSCRIPT"%>
<%

'        --> Her hentes felter fra form siden
'
        Set objConn = Server.CreateObject("ADODB.Connection")
        objConn.Open "Driver={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("db.mdb")
        strSQL = "SELECT * FROM tabel"
        Set objRsSend = objConn.Execute(strSQL)
       
        If Day(Date()) = Day(" & objRsSend("send") & ") And Month(" & objRs("send") & ") = Month(Date()) And Hour(objRsSend("tidsp") = Hour(Now()) Then
        strSQL = "SELECT * FROM tabel WHERE send=#" & objRsSend("send") & "#"
        Set objRs = objConn.Execute(strSQL)
                Set JMail = Server.CreateObject("JMail.SMTPMail")
                    JMail.ServerAddress = "websmtp.server.dk"
                    ' mail config settings
                    JMail.Charset = "iso-8859-1"
                    JMail.ContentTransferEncoding = "8bit"
                        JMail.Sender = "mail@mail.dk"
                        JMail.SenderName = "reminder"
                        JMail.Subject = objRs("tidsp")
                    JMail.AddRecipient "anders@smz.dk"
                    JMail.Body = objRs("kommentar")
                ' 1 - highest priority (Urgent)
                ' 3 - normal
                ' 5 - lowest
                JMail.Priority = 1
                ' Send it...
                On Error Resume Next       
                JMail.execute       
                if err <> 0 then
                    Response.Write("Der er opstået en fejl, kontakt webmasteren.... ")
                end if   
                set JMail = nothing
        End If
       
        conn.close
        ' ---------------------------------------------------------------
        ' send email SLUT
        ' ---------------------------------------------------------------
        %>
        Response.redirect "../index.asp"   
        %>
</p>
--------------------------------------------------------------

//>Rune
Avatar billede andersasp Nybegynder
30. maj 2002 - 14:51 #20
det ser rigtig fornuftigt ud! mit sidste spørgsmål er dog, hvis scriptet ender med response.redirect "../index.asp" - vil det så blive ved med at checkke om der skal sendes flere mails??  eller der det mig der har misforstået noget?
Avatar billede medions Nybegynder
30. maj 2002 - 14:56 #21
Ja det vil!
//>Rune
Avatar billede andersasp Nybegynder
30. maj 2002 - 14:58 #22
kanon du er den sejeste!!
Avatar billede medions Nybegynder
30. maj 2002 - 14:59 #23
Anytime! :-)

Thx 4 Poinz
//>Rune
Avatar billede benson Nybegynder
30. maj 2002 - 15:04 #24
Men men !! Du bør ikke sende til den samme side hele tiden ! Den stopper jo aldrig ! Serveren bliver formentlig overbelastet !
Avatar billede andersasp Nybegynder
30. maj 2002 - 19:19 #25
benson > er der noget man kan gøre for at det ikke overbelaster serveren, kan man evt få scriptet til at checkke kun en gang i timen?
Avatar billede benson Nybegynder
30. maj 2002 - 20:15 #26
Jo det kan du !

Indsæt denne kode efter afslutningen af din ASP, dvs. efter den sidste %>

<HTML>
<HEAD>
<TITLE> Mailsender </TITLE>
<META HTTP-EQUIV="Refresh" CONTENT="10">
</HEAD>
<BODY>
Udført sidste gang <%=now()%>
</BODY>
</HTML>

Værdien "10" er lig 10 sekunder. Ændre den til 3600 så det svarer til en time.
Avatar billede andersasp Nybegynder
30. maj 2002 - 21:09 #27
tak
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