20. september 2004 - 23:41Der er
32 kommentarer og 1 løsning
AspEmail fejl ved forsendelse med data fra database
Jeg har nedenstående kode, der dels skriver data til en database og sender en e-mail med en ordre-bestilling via AspEmail. Jeg har tidligere fået det til at virke med CDONTS, men det understøtter min nuværende udbyder ikke. Derfor må jeg bruge AspEmail. Siden skriver fint data ned i databasen, men kan ikke sende de ønskede informationer.
Når jeg afvikler siden, får jeg fejlmeddelelsen "Kan ikke sende mail til merchant."
Jeg har brug for lidt ekspertise til at løse problemet.
Response.Buffer = true For Each key in Request.Form strname = key strvalue = Request.Form(key) Session(strname) = strvalue Next
Dim arrCart, scartItem arrCart = Session("MyCart") scartItem = Session("cartItem") if scartItem = 0 then Response.Redirect "error.asp?msg=" & Server.URLEncode ("Din session er udløbet, eller du prøvede at sende listen igen.") end if
On error resume next sqlAdd = "INSERT INTO orders(ocustomerid,odate" sqlAdd = sqlAdd & ") VALUES(" sqlAdd = sqlAdd & Session("customerid") & ",#" & Date & "#" sqlAdd = sqlAdd & ")" 'Response.Write sqlAdd 'Response.End
call openConn() dbc.execute sqlAdd, intAffected
if dbc.Errors.count > 0 then call closeConn() Response.Redirect "error.asp?msg=" & server.URLEncode("Fejl ved skrivning til database. Kontakt os venligst.") elseif intAffected = 1 then Dim oid, sqlo sqlo = "SELECT max(orderID) FROM orders" Set rso = dbc.Execute(sqlo) oid = Cint(rso(0)) rso.Close
If oid < 1 Then call closeConn() Response.Redirect "error.asp?msg=" & Server.URLEncode ("Fejl: Ingen ordrenr.") Else 'Ordre ind i oitems table For i = 1 To scartItem sqlOItem = "INSERT INTO oitems(orderid,catalogid,numitems) VALUES(" sqlOItem = sqlOItem & oid sqlOItem = sqlOItem & "," & arrCart(cProductid,i) sqlOItem = sqlOItem & "," & arrCart(cQuantity,i) sqlOItem = sqlOItem & ")" dbc.execute sqlOItem Next If dbc.Errors.Count > 0 then call closeConn() Response.Redirect "error.asp?msg=" & Server.URLEncode ("Ikke fuldfoert. Fejl: ") & dbc.Error.Description else 'send mail to merchant, use function mailMerchant blnMail = mailMerchant("postmaster@domane.dk",oid,nosmtp) if blnMail = false then call closeConn() Response.Redirect "error.asp?msg=" & Server.URLEncode ("Kan ikke sende mail til merchant.") end if end if End if else call closeConn() Response.Redirect "error.asp?msg=" & Server.URLEncode ("Ordre information kan ikke skrives til database. Proev venligst igen senere.") end if If dbc.Errors.Count > 0 then dbc.Close set dbc = nothing Response.Redirect "error.asp?msg=" & Server.URLEncode ("Ikke fuldfoert. Fejl: ") & dbc.Error.Description Else dbc.close set dbc = nothing Response.Redirect "thanks.asp" End If 'End If
function mailMerchant(merchantmail,orderid,smtpServer) 'Kunde info fra DB set cmd = server.CreateObject("ADODB.Command") cmd.ActiveConnection = dbc cmd.CommandText = "qryOrderInfo" cmd.CommandType = adCmdStoredProc set param = cmd.CreateParameter("oid",adInteger,adParamInput,4) cmd.Parameters.Append param cmd("oid") = orderid
'SMTP server strHost = "mail.fantasyleague.dk" If Request("Send") <> "" Then Set Mail = Server.CreateObject("Persits.MailSender") ' enter valid SMTP host Mail.Host = strHost
function mailMerchant(merchantmail,orderid,smtpServer) 'Kunde info fra DB set cmd = server.CreateObject("ADODB.Command") cmd.ActiveConnection = dbc cmd.CommandText = "qryOrderInfo" cmd.CommandType = adCmdStoredProc set param = cmd.CreateParameter("oid",adInteger,adParamInput,4) cmd.Parameters.Append param cmd("oid") = orderid
Response.Buffer = true For Each key in Request.Form strname = key strvalue = Request.Form(key) Session(strname) = strvalue Next
Dim arrCart, scartItem arrCart = Session("MyCart") scartItem = Session("cartItem") if scartItem = 0 then Response.Redirect "error.asp?msg=" & Server.URLEncode ("Din session er udløbet, eller du prøvede at sende listen igen.") end if
On error resume next sqlAdd = "INSERT INTO orders(ocustomerid,odate" sqlAdd = sqlAdd & ") VALUES(" sqlAdd = sqlAdd & Session("customerid") & ",#" & Date & "#" sqlAdd = sqlAdd & ")" 'Response.Write sqlAdd 'Response.End
call openConn() dbc.execute sqlAdd, intAffected
if dbc.Errors.count > 0 then call closeConn() Response.Redirect "error.asp?msg=" & server.URLEncode("Fejl ved skrivning til database. Kontakt os venligst.") elseif intAffected = 1 then Dim oid, sqlo sqlo = "SELECT max(orderID) FROM orders" Set rso = dbc.Execute(sqlo) oid = Cint(rso(0)) rso.Close
If oid < 1 Then call closeConn() Response.Redirect "error.asp?msg=" & Server.URLEncode ("Fejl: Ingen ordrenr.") Else 'Ordre ind i oitems table For i = 1 To scartItem sqlOItem = "INSERT INTO oitems(orderid,catalogid,numitems) VALUES(" sqlOItem = sqlOItem & oid sqlOItem = sqlOItem & "," & arrCart(cProductid,i) sqlOItem = sqlOItem & "," & arrCart(cQuantity,i) sqlOItem = sqlOItem & ")" dbc.execute sqlOItem Next If dbc.Errors.Count > 0 then call closeConn() Response.Redirect "error.asp?msg=" & Server.URLEncode ("Ikke fuldfoert. Fejl: ") & dbc.Error.Description else 'send mail to merchant, use function mailMerchant blnMail = mailMerchant("postmaster@domane.dk",oid,nosmtp) if blnMail = false then call closeConn() Response.Redirect "error.asp?msg=" & Server.URLEncode ("Kan ikke sende mail til merchant.") end if end if End if else call closeConn() Response.Redirect "error.asp?msg=" & Server.URLEncode ("Ordre information kan ikke skrives til database. Proev venligst igen senere.") end if If dbc.Errors.Count > 0 then dbc.Close set dbc = nothing Response.Redirect "error.asp?msg=" & Server.URLEncode ("Ikke fuldfoert. Fejl: ") & dbc.Error.Description Else dbc.close set dbc = nothing Response.Redirect "thanks.asp" End If 'End If
function mailMerchant(merchantmail,orderid,smtpServer) 'Kunde info fra DB set cmd = server.CreateObject("ADODB.Command") cmd.ActiveConnection = dbc cmd.CommandText = "qryOrderInfo" cmd.CommandType = adCmdStoredProc set param = cmd.CreateParameter("oid",adInteger,adParamInput,4) cmd.Parameters.Append param cmd("oid") = orderid
'SMTP server strHost = "mail.domane.dk" If Request("Send") <> "" Then Set Mail = Server.CreateObject("Persits.MailSender") ' enter valid SMTP host Mail.Host = strHost
If Request("Send") <> "" Then Set Mail = Server.CreateObject("Persits.MailSender") ' enter valid SMTP host Mail.Host = strHost
'SMTP server strHost = "mail.domane.dk" If Request("Send") <> "" Then Set Mail = Server.CreateObject("Persits.MailSender") ' enter valid SMTP host Mail.Host = strHost
If Request("Send") <> "" Then Set Mail = Server.CreateObject("Persits.MailSender") ' enter valid SMTP host Mail.Host = strHost
Det skal være:
'SMTP server strHost = "mail.domane.dk" If Request("Send") <> "" Then Set Mail = Server.CreateObject("Persits.MailSender") ' enter valid SMTP host Mail.Host = strHost
Prøv også at rette from så det er en gyldig mail adresse det ikke sikkert det betyder noget men bare for sikkerhedsskyld: Mail.From = "postmaster@domane.dk"
Til denne så det samme mail adress til from og to, som det var med CDONTS koden:
Så i stedet for at lave en redirect så prøv at rette så den udskriver den fejl den får. Prøv at rette dette:
If dbc.Errors.Count > 0 then call closeConn() Response.Redirect "error.asp?msg=" & Server.URLEncode ("Ikke fuldfoert. Fejl: ") & dbc.Error.Description else 'send mail to merchant, use function mailMerchant blnMail = mailMerchant("postmaster@domane.dk",oid,nosmtp) if blnMail = false then call closeConn() Response.Redirect "error.asp?msg=" & Server.URLEncode ("Kan ikke sende mail til merchant.") end if end if
Til dette:
If dbc.Errors.Count > 0 then call closeConn() Response.Redirect "error.asp?msg=" & Server.URLEncode ("Ikke fuldfoert. Fejl: ") & dbc.Error.Description else 'send mail to merchant, use function mailMerchant blnMail = mailMerchant("postmaster@domane.dk",oid,nosmtp) if blnMail = false then call closeConn() response.write strErr response.end ' Response.Redirect "error.asp?msg=" & Server.URLEncode ("Kan ikke sende mail til merchant.") end if end if
Prøv også at udkommenter linjen: On error resume next
sådan: ' On error resume next
bemærk den er 2 steder. Så får du også linjen hvor fejlen kommer og i bedste fald hvad der er galt. Men det de to andre forslag skulle gøre den ikke redirecter til fejl siden og gerne udskrive fejlen hvis den ikke kan sende mailen. Jeg smutter for idag
jeg havde overset noget af din kode, eagleeye. Ved afvikling af siden (med alle dine forslag) får jeg nu kun en blank HTML-side! Den redirecter dog ikke mere!
I'm getting crazy!
Her er den seneste anvendte kode (se nedenfor) - håber ikke at du opgiver... Tak for indsatsen indtil videre.
Response.Buffer = true For Each key in Request.Form strname = key strvalue = Request.Form(key) Session(strname) = strvalue Next
Dim arrCart, scartItem arrCart = Session("MyCart") scartItem = Session("cartItem") if scartItem = 0 then Response.Redirect "error.asp?msg=" & Server.URLEncode ("Din session er udløbet, eller du prøvede at sende listen igen.") end if
if dbc.Errors.count > 0 then call closeConn() Response.Redirect "error.asp?msg=" & server.URLEncode("Fejl ved skrivning til database. Kontakt os venligst.") elseif intAffected = 1 then Dim oid, sqlo sqlo = "SELECT max(orderID) FROM orders" Set rso = dbc.Execute(sqlo) oid = Cint(rso(0)) rso.Close
If oid < 1 Then call closeConn() Response.Redirect "error.asp?msg=" & Server.URLEncode ("Fejl: Ingen ordrenr.") Else 'Ordre ind i oitems table For i = 1 To scartItem sqlOItem = "INSERT INTO oitems(orderid,catalogid,numitems) VALUES(" sqlOItem = sqlOItem & oid sqlOItem = sqlOItem & "," & arrCart(cProductid,i) sqlOItem = sqlOItem & "," & arrCart(cQuantity,i) sqlOItem = sqlOItem & ")" dbc.execute sqlOItem Next If dbc.Errors.Count > 0 then call closeConn() Response.Redirect "error.asp?msg=" & Server.URLEncode ("Ikke fuldfoert. Fejl: ") & dbc.Error.Description else 'send mail to merchant, use function mailMerchant blnMail = mailMerchant("cra@mail.dk",oid,nosmtp) if blnMail = false then call closeConn() response.write strErr response.end ' Response.Redirect "error.asp?msg=" & Server.URLEncode ("Kan ikke sende mail til merchant.") end if end if End if else call closeConn() Response.Redirect "error.asp?msg=" & Server.URLEncode ("Ordre information kan ikke skrives til database. Proev venligst igen senere.") end if If dbc.Errors.Count > 0 then dbc.Close set dbc = nothing Response.Redirect "error.asp?msg=" & Server.URLEncode ("Ikke fuldfoert. Fejl: ") & dbc.Error.Description Else dbc.close set dbc = nothing Response.Redirect "thanks.asp" End If 'End If
function mailMerchant(merchantmail,orderid,smtpServer) 'Kunde info fra DB set cmd = server.CreateObject("ADODB.Command") cmd.ActiveConnection = dbc cmd.CommandText = "qryOrderInfo" cmd.CommandType = adCmdStoredProc set param = cmd.CreateParameter("oid",adInteger,adParamInput,4) cmd.Parameters.Append param cmd("oid") = orderid
'SMTP server strHost = "mail.fantasyleague.dk" If Request("Send") <> "" Then Set Mail = Server.CreateObject("Persits.MailSender") ' enter valid SMTP host Mail.Host = strHost
hmm ok, det lyder lidt mystisk den ikke kommer med en fejl, modtager du en mail?
For at få den til at redirecte igen skal man gøre det modsatte af 21/09-2004 00:34:16.
Så prøv at lave dette:
If dbc.Errors.Count > 0 then call closeConn() Response.Redirect "error.asp?msg=" & Server.URLEncode ("Ikke fuldfoert. Fejl: ") & dbc.Error.Description else 'send mail to merchant, use function mailMerchant blnMail = mailMerchant("cra@mail.dk",oid,nosmtp) if blnMail = false then call closeConn() response.write strErr response.end ' Response.Redirect "error.asp?msg=" & Server.URLEncode ("Kan ikke sende mail til merchant.") end if
Om til:
If dbc.Errors.Count > 0 then call closeConn() Response.Redirect "error.asp?msg=" & Server.URLEncode ("Ikke fuldfoert. Fejl: ") & dbc.Error.Description else 'send mail to merchant, use function mailMerchant blnMail = mailMerchant("cra@mail.dk",oid,nosmtp) if blnMail = false then call closeConn() Response.Redirect "error.asp?msg=" & Server.URLEncode ("Kan ikke sende mail til merchant.") end if
<SCRIPT LANGUAGE=VBScript RUNAT=Server> 'replace user enters by breaks function showBreaks(str) showBreaks = replace(str, chr(10), " <br>") End Function
'replace single quote by two single quotes function TwoSingleQ(str) if instr(1,str,"'") > 0 then TwoSingleQ=replace(str, "'", "''") else TwoSingleQ = str end if End Function
Forfra! Se bort fra de to sidste indlæg, eagleeye.
Jeg har prøvet forskellige ting, men har efterhånden mistet overblikket! Ved afvikling af nedenstående kode fås fortsat fejlmeddelelsen "Error - Kan ikke sende mail til merchant.
Response.Buffer = true For Each key in Request.Form strname = key strvalue = Request.Form(key) Session(strname) = strvalue Next
Dim arrCart, scartItem arrCart = Session("MyCart") scartItem = Session("cartItem") if scartItem = 0 then Response.Redirect "error.asp?msg=" & Server.URLEncode ("Din session er udløbet, eller du prøvede at sende listen igen.") end if
if dbc.Errors.count > 0 then call closeConn() Response.Redirect "error.asp?msg=" & server.URLEncode("Fejl ved skrivning til database. Kontakt os venligst.") elseif intAffected = 1 then Dim oid, sqlo sqlo = "SELECT max(orderID) FROM orders" Set rso = dbc.Execute(sqlo) oid = Cint(rso(0)) rso.Close
If oid < 1 Then call closeConn() Response.Redirect "error.asp?msg=" & Server.URLEncode ("Fejl: Ingen ordrenr.") Else 'Ordre ind i oitems table For i = 1 To scartItem sqlOItem = "INSERT INTO oitems(orderid,catalogid,numitems) VALUES(" sqlOItem = sqlOItem & oid sqlOItem = sqlOItem & "," & arrCart(cProductid,i) sqlOItem = sqlOItem & "," & arrCart(cQuantity,i) sqlOItem = sqlOItem & ")" dbc.execute sqlOItem Next If dbc.Errors.Count > 0 then call closeConn() Response.Redirect "error.asp?msg=" & Server.URLEncode ("Ikke fuldfoert. Fejl: ") & dbc.Error.Description else 'send mail to merchant, use function mailMerchant blnMail = mailMerchant("postmaster@fantasyleague.dk",oid,nosmtp) if blnMail = false then call closeConn() Response.Redirect "error.asp?msg=" & Server.URLEncode ("Kan ikke sende mail til merchant.") end if end if End if else call closeConn() Response.Redirect "error.asp?msg=" & Server.URLEncode ("Ordre information kan ikke skrives til database. Proev venligst igen senere.") end if If dbc.Errors.Count > 0 then call closeConn() Response.Redirect "error.asp?msg=" & Server.URLEncode ("Ikke fuldfoert. Fejl: ") & dbc.Error.Description else 'send mail to merchant, use function mailMerchant blnMail = mailMerchant("cra@mail.dk",oid,nosmtp) if blnMail = false then call closeConn() Response.Redirect "error.asp?msg=" & Server.URLEncode ("Kan ikke sende mail til merchant.") end if 'End If
function mailMerchant(merchantmail,orderid,smtpServer) 'Kunde info fra DB set cmd = server.CreateObject("ADODB.Command") cmd.ActiveConnection = dbc cmd.CommandText = "qryOrderInfo" cmd.CommandType = adCmdStoredProc set param = cmd.CreateParameter("oid",adInteger,adParamInput,4) cmd.Parameters.Append param cmd("oid") = orderid
'SMTP server strHost = "mail.domane.dk" If Request("Send") <> "" Then Set Mail = Server.CreateObject("Persits.MailSender") ' enter valid SMTP host Mail.Host = strHost
Jeg har lavet en test-side med mail-delen. Den modtager jeg fint. Rigtig strHost = "mail.fantasyleague.dk" - men det har jeg taget højde for tidligere!
Response.Buffer = true For Each key in Request.Form strname = key strvalue = Request.Form(key) Session(strname) = strvalue Next
Dim arrCart, scartItem arrCart = Session("MyCart") scartItem = Session("cartItem") if scartItem = 0 then Response.Redirect "error.asp?msg=" & Server.URLEncode ("Din session er udløbet, eller du prøvede at sende listen igen.") end if
if dbc.Errors.count > 0 then call closeConn() Response.Redirect "error.asp?msg=" & server.URLEncode("Fejl ved skrivning til database. Kontakt os venligst.") elseif intAffected = 1 then Dim oid, sqlo sqlo = "SELECT max(orderID) FROM orders" Set rso = dbc.Execute(sqlo) oid = Cint(rso(0)) rso.Close
If oid < 1 Then call closeConn() Response.Redirect "error.asp?msg=" & Server.URLEncode ("Fejl: Ingen ordrenr.") Else 'Ordre ind i oitems table For i = 1 To scartItem sqlOItem = "INSERT INTO oitems(orderid,catalogid,numitems) VALUES(" sqlOItem = sqlOItem & oid sqlOItem = sqlOItem & "," & arrCart(cProductid,i) sqlOItem = sqlOItem & "," & arrCart(cQuantity,i) sqlOItem = sqlOItem & ")" dbc.execute sqlOItem Next If dbc.Errors.Count > 0 then call closeConn() Response.Redirect "error.asp?msg=" & Server.URLEncode ("Ikke fuldfoert. Fejl: ") & dbc.Error.Description else 'send mail to merchant, use function mailMerchant blnMail = mailMerchant("postmaster@fantasyleague.dk",oid,nosmtp) if blnMail = false then call closeConn() Response.Redirect "error.asp?msg=" & Server.URLEncode ("Kan ikke sende mail til merchant.") end if end if End if else call closeConn() Response.Redirect "error.asp?msg=" & Server.URLEncode ("Ordre information kan ikke skrives til database. Proev venligst igen senere.") end if If dbc.Errors.Count > 0 then call closeConn() Response.Redirect "error.asp?msg=" & Server.URLEncode ("Ikke fuldfoert. Fejl: ") & dbc.Error.Description else 'send mail to merchant, use function mailMerchant blnMail = mailMerchant("cra@mail.dk",oid,nosmtp) if blnMail = false then call closeConn() Response.Redirect "error.asp?msg=" & Server.URLEncode ("Kan ikke sende mail til merchant.") end if 'End If
function mailMerchant(merchantmail,orderid,smtpServer) 'Kunde info fra DB set cmd = server.CreateObject("ADODB.Command") cmd.ActiveConnection = dbc cmd.CommandText = "qryOrderInfo" cmd.CommandType = adCmdStoredProc set param = cmd.CreateParameter("oid",adInteger,adParamInput,4) cmd.Parameters.Append param cmd("oid") = orderid
function mailMerchant(merchantmail,orderid,smtpServer) 'Kunde info fra DB set cmd = server.CreateObject("ADODB.Command") cmd.ActiveConnection = dbc cmd.CommandText = "qryOrderInfo" cmd.CommandType = adCmdStoredProc set param = cmd.CreateParameter("oid",adInteger,adParamInput,4) cmd.Parameters.Append param cmd("oid") = orderid
<SCRIPT LANGUAGE=VBScript RUNAT=Server> 'replace user enters by breaks function showBreaks(str) showBreaks = replace(str, chr(10), " <br>") End Function
'replace single quote by two single quotes function TwoSingleQ(str) if instr(1,str,"'") > 0 then TwoSingleQ=replace(str, "'", "''") else TwoSingleQ = str end if End Function
<% 'replace user enters by breaks function showBreaks(str) showBreaks = replace(str, chr(10), " <br>") End Function
'replace single quote by two single quotes function TwoSingleQ(str) if instr(1,str,"'") > 0 then TwoSingleQ=replace(str, "'", "''") else TwoSingleQ = str end if End Function
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.