Avatar billede steen_hansen Forsker
04. april 2007 - 00:23 Der er 11 kommentarer og
1 løsning

JMail sender dobbelt

Dette script:

        JMail.ServerAddress = "localhost"
        JMail.Sender = "Denne_mail_kan_ikke_besvares@mydomain.dk"
        JMail.ReplyTo = "Denne_mail_kan_ikke_besvares@mydomain.dk"
        JMail.Subject = "xxxxxxxxxxxxxx"
        JMail.AddRecipient Trim(Request.Form("email"))
        JMail.AddRecipientBCC "admin@mydomain"

sender 2 mails til brugeren med den samme besked. Hvor hopper kæden af? Den burde kun sende én e-mail .... så vidt jeg kan se.
Avatar billede goose Nybegynder
04. april 2007 - 08:29 #1
Du har ikke et loop der laver noget ged, altså noget for next eller lign.?

Jeg har tidligere været ude for, at min Outlook henter dobbelt af nogle mails, det kan ikke evt. være en Outlook fejl?

/Goose
Avatar billede ellebaek Nybegynder
04. april 2007 - 17:17 #2
Hvordan ser delen ud hvor du sender mailen... det du har vist definere kun mailen...
Avatar billede steen_hansen Forsker
05. april 2007 - 10:03 #3
Hej drenge! :)

Haft ikke haft tid til at være her, sorry :)

goose: Nej, der er hverken loop eller fejl i opsætningen af MS Outlook. Jeg lægger scriptet, så du kan se det hele.

ellebaek: Det er rigtigt, jeg dimensionerer kun afsender, serveradresse, modtager, bcc etc. i det ovenstående. Lægger hele scriptet:

        Set JMail = Server.CreateObject("JMail.SMTPMail")
        JMail.ServerAddress = "localhost"
        JMail.Sender = "Denne_mail_kan_ikke_besvares@mydomain.dk"
        JMail.ReplyTo = "Denne_mail_kan_ikke_besvares@mydomain.dk"
        JMail.Subject = "Du er oprettet som bruger af mydomain.dk"
        JMail.AddRecipient Trim(Request.Form("email"))
        JMail.AddRecipientBCC "admin@mydomain.dk"
        JMail.Body = _
            "Hej " & Trim(Request.Form("firstname")) & "!" & vbNewLine & vbNewLine & _
            "..................................................." & vbNewLine & vbNewLine & _
            "..................................................." & vbNewLine & vbNewLine & _
            "..................................................."
        JMail.Execute


Jeg har en frygtelig mistanke om, at der er noget rod i opsætningerne på serveren hos min host. Jeg skiftede til ConCor for lidt over 2 år siden.
Avatar billede ellebaek Nybegynder
05. april 2007 - 11:39 #4
Det er ikke fordi du laver noget i stilen af:

if not JMail.sendMail() then
  response.write "Der skete en fejl"
end if

eller tilsvarende, for så vil den sende 2 gange....
Avatar billede steen_hansen Forsker
05. april 2007 - 12:09 #5
Hmm? I umiddelbar forlængelse har jeg dette:

            Dim Dato
            Dato = Day(Date) & "/" & Month(Date) & "/" & Year(Date) & " " & Time()

            If JMail.Execute = True Then
                Conn.Execute("INSERT INTO myTable (username, pass, firstname, middlename, lastname, email, created, lastIP) VALUES (" & _
                    "'" & Trim(SQLEncode(Request.Form("username"))) & "', " & _
                    "'" & Trim(SQLEncode(Request.Form("password"))) & "', " & _
                    "'" & Trim(SQLEncode(Request.Form("firstname"))) & "', " & _
                    "'" & Trim(SQLEncode(Request.Form("middlename"))) & "', " & _
                    "'" & Trim(SQLEncode(Request.Form("lastname"))) & "', " & _
                    "'" & Trim(SQLEncode(Request.Form("email"))) & "', " & _
                    "'" & Dato & "', " & _
                    "'" & SQLEncode(Request.ServerVariables("REMOTE_ADDR")) & "')")
                Conn.Close
            Else
                Conn.Close
                Response.Redirect "/createuser.asp?msg=E-mail+med+brugeroplysninger+kunne+ikke+sendes+til+e-mailadressen,+og+brugeren+kunne+derfor+heller+ikke+oprettes.+Kig+efter+om+den+indtastede+e-mailadresse+er+korrekt,+og+prøv+igen."
            End If

            Set JMail = Nothing
            Response.Redirect "/createuser.asp?msg=Brugeren+er+blevet+oprettet.+Den+pågældende+bruger+vil+inden+for+kort+tid+modtage+en+e-mail+med+brugeroplysningerne,+som+skal+bruge+første+gang+der+logges+ind."
Avatar billede ellebaek Nybegynder
05. april 2007 - 12:47 #6
Så er det der den ligger....

Så skal du slette linien første gang du har din JMail.execute..

Så burde det spille for dig ;-)
Avatar billede ellebaek Nybegynder
05. april 2007 - 12:48 #7
problemet ligger i den her linie:
If JMail.Execute = True Then


den sender mailen for dig igen, så hvis du allerede har haft:
JMail.execute, så sender du den 2 gange...
Avatar billede steen_hansen Forsker
05. april 2007 - 13:28 #8
Som jeg ser det, tjekkes der for, om JMail er ekseveret. Hvis det er tilfældet, skal variablerne fra formularfelterne indsættes i DB.

Hvordan kan man ellers lave det? Jeg vil gerne have, at administratoren får en besked, hvis der er noget galt:

Response.Redirect "/createuser.asp?msg=E-mail+med+brugeroplysninger+kunne+ikke+sendes.........

eller

Response.Redirect "/createuser.asp?msg=Brugeren+er+blevet+oprettet.+.............
Avatar billede steen_hansen Forsker
05. april 2007 - 13:28 #9
Jeg prøver lige. Hvis det ikke virker, vender jeg lige tilbage :)
Avatar billede steen_hansen Forsker
05. april 2007 - 13:33 #10
Ok, det var sq det! :)

Jeg kan godt tjekke på e-mailadressen på en anden måde, så smid lige et svar, ellebaek :)
Avatar billede ellebaek Nybegynder
05. april 2007 - 14:03 #11
Der er et svar her...

men det den helt præcis gør er at den tjekker om JMail.Execute returnerer True, altså at den ikke har fået en fejl fra serveren.
Så du kan stadig sagtens bruge if JMail.execute = true, men hvis du benytter den, så skal du ikke have JMail.execute til at starte med... for så sender du 2 gange ;-)

Så det skal se ud som noget i stilen af:


Set JMail = Server.CreateObject("JMail.SMTPMail")
        JMail.ServerAddress = "localhost"
        JMail.Sender = "Denne_mail_kan_ikke_besvares@mydomain.dk"
        JMail.ReplyTo = "Denne_mail_kan_ikke_besvares@mydomain.dk"
        JMail.Subject = "Du er oprettet som bruger af mydomain.dk"
        JMail.AddRecipient Trim(Request.Form("email"))
        JMail.AddRecipientBCC "admin@mydomain.dk"
        JMail.Body = _
            "Hej " & Trim(Request.Form("firstname")) & "!" & vbNewLine & vbNewLine & _
            "..................................................." & vbNewLine & vbNewLine & _
            "..................................................." & vbNewLine & vbNewLine & _
            "..................................................."
     

Dim Dato
            Dato = Day(Date) & "/" & Month(Date) & "/" & Year(Date) & " " & Time()

            If JMail.Execute = True Then
                Conn.Execute("INSERT INTO myTable (username, pass, firstname, middlename, lastname, email, created, lastIP) VALUES (" & _
                    "'" & Trim(SQLEncode(Request.Form("username"))) & "', " & _
                    "'" & Trim(SQLEncode(Request.Form("password"))) & "', " & _
                    "'" & Trim(SQLEncode(Request.Form("firstname"))) & "', " & _
                    "'" & Trim(SQLEncode(Request.Form("middlename"))) & "', " & _
                    "'" & Trim(SQLEncode(Request.Form("lastname"))) & "', " & _
                    "'" & Trim(SQLEncode(Request.Form("email"))) & "', " & _
                    "'" & Dato & "', " & _
                    "'" & SQLEncode(Request.ServerVariables("REMOTE_ADDR")) & "')")
                Conn.Close
            Else
                Conn.Close
                Response.Redirect "/createuser.asp?msg=E-mail+med+brugeroplysninger+kunne+ikke+sendes+til+e-mailadressen,+og+brugeren+kunne+derfor+heller+ikke+oprettes.+Kig+efter+om+den+indtastede+e-mailadresse+er+korrekt,+og+prøv+igen."
            End If

            Set JMail = Nothing
            Response.Redirect "/createuser.asp?msg=Brugeren+er+blevet+oprettet.+Den+pågældende+bruger+vil+inden+for+kort+tid+modtage+en+e-mail+med+brugeroplysningerne,+som+skal+bruge+første+gang+der+logges+ind."
Avatar billede steen_hansen Forsker
05. april 2007 - 14:19 #12
Fedest, jeg prøver :)

Tak for hjælpen, også for dit input, goose :)
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