Avatar billede kkd Nybegynder
23. januar 2004 - 14:44 Der er 11 kommentarer og
1 løsning

JMail sender kun til egen mailserver

Hej...

Nedenstående script vil kun sende mails til adresser der ender med @hjemmeside.dk, alle andre vil den ikke sende til
Hvad er galt?

  <%
if request.Form("subject") = "" then
    Response.write "Vælg det emne, der passer bedst til din besked"
    Response.write "<br><br><a href=""java script:history.go(-1)"" OnFocus=""window.status='Et trin tilbage'; return true;"" OnMouseOver=""window.status='Et trin tilbage'; return true;"" onMouseOut=""window.status=''; return true;"">Prøv igen</a>"
    Response.end
    elseif request.Form("body") = "" then
    Response.Write "Du har glemt at skrive en besked!"
    Response.write "<br><br><a href=""java script:history.go(-1)"" OnFocus=""window.status='Et trin tilbage'; return true;"" OnMouseOver=""window.status='Et trin tilbage'; return true;"" onMouseOut=""window.status=''; return true;"">Prøv igen</a>"
    Response.end
else
    subject = "Meddelelse fra Hjemmeside.dk, d. " & FormatDateTime(Now, vbLongDate)

    Signature = "Med venlig hilsen" & vbCrLf & "Mig" & vbCrLf & "www.hjemmeside.dk"
   
    ' Databaseforbindelse - husk at angive sti til din database
    Set Conn = Server.CreateObject("ADODB.Connection")
    DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
    DSN = DSN & "DBQ=" & Server.MapPath("/db/database.mdb")
    Conn.Open DSN

    ' SQL forespørgsel
    strSQL = "Select * from Mailliste"
    Set rs = Conn.Execute(strSQL)
   
Do
    ' Get the form data
            senderEmail = "robot@hjemmeside.dk"
            recipient  = rs("Email")
            body        = vbCrLf & Request.Form("body") & vbCrLf & vbCrLf & Signature

    ' Create the JMail message Object
    set msg = Server.CreateOBject( "JMail.Message" )

    ' Set logging to true to ease any potential debugging
    ' And set silent to true as we wish to handle our errors ourself
    msg.Logging = true
    msg.silent = true

    ' Enter the sender data
    msg.From = senderEmail

    ' Note that as addRecipient is method and not
    ' a property, we do not use an equals ( = ) sign
    msg.AddRecipient recipient

    ' The subject of the message
    msg.Subject = subject

    ' And the body
    msg.body = body

    ' Now send the message, using the indicated mailserver
        if not msg.Send("mail.hjemmeside.dk" ) then
            Response.write "<br>Meddelelsen kunne ikke leveres til: <font color =""#FF0000"">" & recipient & "</font>"
        else
            Response.write "<br>Meddelelsen blev leveret til: <font color =""#00FF00"">" & recipient & "</font>"
        end if
   
    rs.MoveNext
    Loop While Not rs.EOF

end if
%>
Avatar billede mekaniker Nybegynder
23. januar 2004 - 17:23 #1
Jeg tror ikke det er jmail, men mere indstillingerne i din mailserver.

hvilken mailserver bruger du..?
Avatar billede mekaniker Nybegynder
23. januar 2004 - 17:32 #2
Også ville jeg også lige flytte denne linie
set msg = Server.CreateOBject( "JMail.Message" )

op så den kommer uden for din "do - loop"
Avatar billede kkd Nybegynder
23. januar 2004 - 20:54 #3
Hvad mener du med hvilken mailserver?
Jeg bruger den, som jeg af min udbyder har fået at vide, jeg skal bruge.
Adressen mail.hjemmeside.dk er adressen på SMTP-serveren (og POP3-serveren)
Avatar billede kkd Nybegynder
23. januar 2004 - 21:03 #4
Flytter jeg set msg = Server.CreateOBject( "JMail.Message" ) uden for loopet, vil den slet ikke sende til nogen adresser!
Avatar billede websam Nybegynder
24. januar 2004 - 07:00 #5
Umiddelbart kan jeg ikke se at du i din kode angiver din smtp adresse ?

Den skal du have med.

/websam
Avatar billede kkd Nybegynder
24. januar 2004 - 09:51 #6
Hvis jeg tilføjer denne linie i løkken, giver den fejlmeddelelse i samme linie!
JMail.ServerAddress = "mail.hjemmeside.dk"

Og angiver jeg i øvrigt ikke mailserveren i linien:
if not msg.Send("mail.hjemmeside.dk" ) then

Den kan jo godt sende til adresser, der ender med @hjemmeside.dk
Avatar billede mekaniker Nybegynder
24. januar 2004 - 11:45 #7
Prøv det her

det er hvad jeg selv har brugt.

Jeg har rettet det til med dine vars.

<%
server.ScriptTimeout = 1000
if request.Form("subject") = "" then
    Response.write "Vælg det emne, der passer bedst til din besked"
    Response.write "<br><br><a href=""java script:history.go(-1)"" OnFocus=""window.status='Et trin tilbage'; return true;"" OnMouseOver=""window.status='Et trin tilbage'; return true;"" onMouseOut=""window.status=''; return true;"">Prøv igen</a>"
    Response.end
    elseif request.Form("body") = "" then
    Response.Write "Du har glemt at skrive en besked!"
    Response.write "<br><br><a href=""java script:history.go(-1)"" OnFocus=""window.status='Et trin tilbage'; return true;"" OnMouseOver=""window.status='Et trin tilbage'; return true;"" onMouseOut=""window.status=''; return true;"">Prøv igen</a>"
    Response.end
else
    subject = "Meddelelse fra Hjemmeside.dk, d. " & FormatDateTime(Now, vbLongDate)

    Signature = "Med venlig hilsen" & vbCrLf & "Mig" & vbCrLf & "www.hjemmeside.dk"


Set myConn = Server.CreateObject("ADODB.Connection")
myConn.open "provider=microsoft.jet.oledb.4.0;data source=" & server.mappath("/db/database")&";"


    SQL = "Select * from Mailliste"
    set rs = myConn.execute( SQL )

    do while not rs.eof
        on error resume next
        recipient  = rs("Email")
        body = Request.Form("body")
   
        set msg = Server.CreateOBject( "JMail.Message" )

               
        msg.Logging = true
        msg.silent = true
        msg.From = "robot@hjemmeside.dk"
        msg.FromName = "robot@hjemmeside.dk"
        msg.AddRecipient recipient
        msg.Subject = subject
        msg.Body = vbCrLf & body & vbCrLf & vbCrLf & Signature
       
        if not msg.Send("mail.hjemmeside.dk" ) then
            Response.write "<br>Meddelelsen kunne ikke leveres til: <font color =""#FF0000"">" & recipient & "</font>"
        else
            Response.write "<br>Meddelelsen blev leveret til: <font color =""#00FF00"">" & recipient & "</font>"
        end if

        rs.movenext
        msg.close
        set msg = nothing
    loop
        set SQL = nothing       
end if       
%>
Avatar billede kkd Nybegynder
24. januar 2004 - 13:20 #8
Jeg tror du havde ret, da du sagde at det var indstillingerne på amilserveren. Jeg prøvede at lave samme funktion med ASPMail, og bad den om at udskrive evt. fejlmeddelelser, når mailen ikke kunne sendes.

Den fejlmeddelse den gav, kan skyldes en af følgende to:

-A duplicate IP address on your network
-A misconfigured firewall or proxy server
A firewall or proxy server may block the connection.

Er der noget jeg kan gøre ved det, eller er det op til min udbyder (og kan de gøre noget ved det, hvis de ikke skal fjerne deres firewall)?
Avatar billede stoney96 Nybegynder
25. januar 2004 - 14:55 #9
Du SKAL sætte .FROM til en GYLDIG mailadresse, ligesom
objCDOMail.From ="da@dansite.dk"

Ellers kan man kun sende til en adresse på serveren selv.
Avatar billede kkd Nybegynder
26. januar 2004 - 09:36 #10
Stoney96>> robot@hjemmeside.dk er en gyldig adresse (jeg har selvfølgelig udskiftet hjemmeside, med mit eget domæne)!
Avatar billede stoney96 Nybegynder
26. januar 2004 - 13:18 #11
OK, men det er faktisk sådan at man kun kan sende til adresser på egen server hvis adressen ikke er gyldig ! Blot som generel orientering.
Avatar billede kkd Nybegynder
27. januar 2004 - 17:34 #12
Nu har jeg fået det til at virke...

Det viste sig, at jeg skulle angive en HELT anden SMTP-server, for at få den til at sende videre til andre adresser (og det stod der selvfølgelig ikke noget om på deres support-sider...)
Men nu virker det - Jeg tager selv pointene, da mit script jo ikke fejlede noget!!!
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