webForumDet fria alternativet

QueryString problem

22 svar · 537 visningar · startad av wborg

wborgMedlem sedan dec. 2003208 inlägg
#1

Hej,

Jag försöker få till så att om man klickar på 'Kontakta mig'
för en viss person där länken ser ut så här:

<a href="kontakt3.asp?name=John Doe&email=john.doe@hotmail.com">Kontakta mig</a>

så vill jag att den email adressen och namnet automatiskt ska
hamna i

mailare.Recipients.Add "name@domain.com", "Name"

för att få till det så försökte jag med detta (röd kod)

Dim Meddelande, epost, [red]email[/red], namn, [red]name[/red], hemsida, innehall, sida
Meddelande = Request.Form("meddelande")
epost = Request.Form("epost")
[red]email = Request.QueryString("email")[/red]
namn = Request.Form("namn")
[red]name = Request.QueryString("name")[/red]
hemsida = Request.Form("hemsida")
innehall = meddelande & "$|$" & epost & "$|$" & namn & "$|$" & hemsida
sida = formularsida

och kallade sedan på dom så här

mailare.Recipients.Add ""& email &"", ""& name &""

men det funkar inte :(

Felmeddelandet lyder så här
aspSmartMail.SendMail : Error 80 fel '80040050'

There is no Recipient. (verify the address list)

/skicka3.asp, rad 125

rad 125

mailare.SendMail

Någon som ser felet??

/S

(I koden nedan har jag markerat alla berörda delar med blått)

<%

' På denna sida finns koden som gör att dina besökares meddelanden skickas till din e-post adress.
' Det är därför viktigt att du anger korrekta uppgifter nedan.

Dim formularsida, mottagare_namn, mottagare_epost, rubrik, mailserver
formularsida = "kontakt.asp" ' Ändra här om du bytt namn på sidan med formuläret
rubrik = "Mail från hemsidan" ' Ändra här om du vill ha annan rubrik på alla mail som skickas
mailserver = "mail.hotmail.com" ' VIKTIGT! Ändra denna till din e-post adress SMTP server!
'(SMTP-server = Server för utgående mail)
'VIKTIGT! Längre ner i koden måste du ställa in vart mailen skall skickas!!

'=================================================================================================
'OBSERVERA!
'Här nedan finns kod som gör att meddelandet skickas och skall fungera helt felfritt, det brukar
'vara fel på mailservern, eller e-post adressen som orsakar fel. Så PILLA INTE i nedanstående kod
'om du inte har goda kunskaper om ASP och vet vad du gör! Längst ner i koden måste du dock ändra
'vart mailen skall skickas. Det står mer om det längre ner.
'=================================================================================================

'Här hämtas informationen och läggs i variabler. 
[blue]Dim Meddelande, epost, namn, hemsida, innehall, sida
Meddelande = Request.Form("meddelande")
epost = Request.Form("epost")
namn = Request.Form("namn")
hemsida = Request.Form("hemsida")
innehall = meddelande & "$|$" & epost & "$|$" & namn & "$|$" & hemsida
sida = formularsida
[/blue]

'Här kontrolleras fälten så att alla obligatoriska fält är ifyllda
IF Not Len(Meddelande) <> 0 then
	session("falt") = innehall
	Session("kontakta_mig") = "You forgot to give us a message."
	Response.Redirect sida
ELSEIF Not Len(namn) <> 0 then
	session("falt") = innehall
	Session("kontakta_mig") = "You forgot to give us your name."
	Response.Redirect sida
ELSEIF Not Len(epost) <> 0 then
	session("falt") = innehall
	Session("kontakta_mig") = "You forgot to give us your E-mail address."
	Response.Redirect sida
END IF

'Här kontrolleras e-post adressen
IF Instr(epost,"@") Then
	' inget
ELSE
	session("falt") = innehall
	Session("kontakta_mig") = "Du har angett en felaktig e-post adress"
	Response.Redirect sida
END IF
IF Instr(epost,".") Then
	' inget
ELSE
	session("falt") = innehall
	Session("kontakta_mig") = "Du har angett en felaktig e-post adress"
	Response.Redirect sida
END IF

' Här ändras hemsideadressen så att den alltid inleds med [url]http://[/url]
IF Len(hemsida) <> 0 Then
	IF Left(hemsida,7) = "http://" Then
		webb = Lcase(hemsida)
	ELSE
		webb = "http://" & Lcase(hemsida)
	END IF
END IF

'=================================================================================================
' Här börjar AspSmartMail-koden. Ändra inte nedanstående kod, om du inte har goda kunskaper om ASP
' AspSmartMail-komponentens funktioner. Det är väldigt ovanligt att fel uppstår i nedanstående kod. 
' Om fel uppstår på raden precis nedanför denna kommentar så brukar det bero på att servern INTE 
' HAR STÖD FÖR ASPSMARTMAIL. VIKTIGT! Ändra den rad som har en kommentar UNDER sig!
'=================================================================================================

Set mailare = Server.CreateObject("aspSmartMail.SmartMail")  
	mailare.Server = ""&mailserver&""
	mailare.SenderName = ""&namn&""
	mailare.SenderAddress = ""&epost&""
[blue]mailare.Recipients.Add "name@hotmail.com", "Name"[/blue]
	' Ovanstående måste du ändra! Det är väldigt viktigt att du ändrar det, annars funkar inte scriptet!
	mailare.Subject = ""&rubrik&""
	
	html = html & "<body bgcolor=#CCCCCC>"
	html = html & "<font face='verdana' size='1'>"
	html = html & Replace(Server.HTMLEncode(Meddelande),vbCrlf,"<br>")
	html = html & "<br><br><br>"
	html = html & "------------------------------------------"
	html = html & "<br>"
	html = html & "<b>Skickades: </b> " & Now
	html = html & "<br>"
	html = html & "<b>Namn: </b> " & namn
	html = html & "<br>"
	html = html & "<b>E-mail: </b><a href=""mailto:"& epost & """>" & epost & "</a><br>"
	html = html & "<br>"
	If Len(hemsida) <> 0 then
	html = html & "<b>Hemsida: </b><a href=" & webb & ">" & webb & "</a><br>" 
	End If
	html = html & "------------------------------------------"
	html = html & "<br>"
	html = html & "</font>"
	mailare.body = ""&html&""
	mailare.Priority = 2
	mailare.ContentType = "text/html" 
	mailare.Charset = "iso-8859-1"
	mailare.SendMail
Set mailare = nothing

Session("kontakta_mig") = "Meddelandet är nu skickat!"
Response.Redirect sida
%>
InsiderMedlem sedan jan. 20001 003 inlägg
#2

Du får inte ha mellanslag i en querystring. (eller någon url)

dahlgrenMedlem sedan aug. 20011 442 inlägg
#3

Är det inte kanska dumt att skicka adresserna i klartext i querystring. Då kan ju vem som helst skicka vart han vill i mailscriptets namn. Ha adresserna lagrade i varibler på sidan som skickar i stället och skicka endast med ett id som kopplar ihop till rätt variabel. Dett förutsatta att det inte är väldigt många adresser.

wborgMedlem sedan dec. 2003208 inlägg
#4

Ok, mellanslaget är borta men jag får fortfarande
samma felmeddelande:

aspSmartMail.SendMail : Error 80 fel '80040050'
There is no Recipient. (verify the address list)
/skicka3.asp, rad 126

Kan det vara så att QueryStringen inte följer med från länken
av någon anledning?

<a href="skicka3.asp?Email=min@mail.se&Fname=John&Lname=Doe"

/S

Jesper TMedlem sedan nov. 20017 058 inlägg
#5

dU blAndAr geMener - veRSaler Om VarT annAt, Var konsekvent! ;)
<a href="skicka3.asp?email=min@mail.se&name=John Doe"

Jesper TMedlem sedan nov. 20017 058 inlägg
#6

sedan har du en querystring som heter "name" men i länken står det Fname & Lname.
Vad gäller?

Jesper TMedlem sedan nov. 20017 058 inlägg
#7

Insider skrev:

Du får inte ha mellanslag i en querystring. (eller någon url)

Det skall väl inte vara några problem eller?
Man kan ju köra med server.URLencode, så blir mellanslag till %20

wborgMedlem sedan dec. 2003208 inlägg
#8

Nu är jag tillbaka till samma situation som när jag först postade frågan :(

Har ingen aning om vad som kan vara fel :(

/S

solbulleMedlem sedan mars 20014 998 inlägg
#9

epost = Request.querystring("epost")
namn = Request.querystring("namn")

wborgMedlem sedan dec. 2003208 inlägg
#10

epost = avsändarens epost
namn = avsändarens namn

dvs dom hämtas så här epost = Request.Form("epost")

det jag är ute efter är att använda samma formulär oavsett vem som ska ta emot mailet. Just nu har jagen sida med en förenings styrelsemedlemmar där varje person har en länk som ser ut så
här:

<a href="kontakt.asp?email=john.doe@hotmail.com&name=John Doe">Kontakta mig</a>

/S

MogMedlem sedan nov. 2003255 inlägg
#11

Detta bör funka.

Länken:

<a href="kontakt3.asp?name=John Doe&email=john.doe@hotmail.com">Kontakta mig</a>

kontakt3.asp:

namn = Request.querystring("name")
epost = Request.querystring("email")

mailare.Recipients.Add epost, namn

' eller
mailare.Recipients.Add Request.querystring("email"), Request.querystring("name")
Jesper TMedlem sedan nov. 20017 058 inlägg
#12

Och då har Solbulle svarat på din fråga i inlägget ovanför.
Du kan även ta bort "querystring" så kan du använda samma request till både ditt formulär och i länken.

epost = Request("epost")
namn = Request("namn")
Jesper TMedlem sedan nov. 20017 058 inlägg
#13

Mog skrev:

Detta bör funka.

Länken:

<a href="kontakt3.asp?name=John Doe&email=john.doe@hotmail.com">Kontakta mig</a>

kontakt3.asp:

namn = Request.querystring("name")
epost = Request.querystring("email")

mailare.Recipients.Add epost, namn

' eller
mailare.Recipients.Add Request.querystring("email"), Request.querystring("name")

Varför sätta en variabel och sedan inte använda den?

MogMedlem sedan nov. 2003255 inlägg
#14

Jesper T skrev:

Mog skrev:

Detta bör funka.

Länken:

<a href="kontakt3.asp?name=John Doe&email=john.doe@hotmail.com">Kontakta mig</a>

kontakt3.asp:

namn = Request.querystring("name")
epost = Request.querystring("email")

mailare.Recipients.Add epost, namn

' eller
mailare.Recipients.Add Request.querystring("email"), Request.querystring("name")

Varför sätta en variabel och sedan inte använda den?

Antingen sätter man variabler och använder dem
' ELLER
använder requesten direkt.

wborgMedlem sedan dec. 2003208 inlägg
#15

Oops! Jag var lite otydlig ser jag och dessutom skrev jag lite fel.

dvs att querystringen ska skickas från styrelsen.asp till
kontakt.asp och sen vidare till skicka3.asp.

Styrelsen.asp:

<a href="kontakt.asp?name=John Doe&email=john.doe@hotmail.com">Kontakta mig</a>

Kontakt.asp:

<html>
<head>
  <title></title>
</head>
<body>
<form method="post" action="skicka3.asp">
<table border="0">
  <tr> 
    <td colspan="2"><font size="2" face="Verdana"><b><font size="1">Mail till <%=Request.QueryString("name")%></font></b></font></td>
  </tr>
  <%
    If Len(Session("kontakta_mig")) <> 0 then
	If Len(Session("falt")) <> 0 then
		uppg = Split(Session("falt"),"$|$")
		mess = uppg(0)
		namn = uppg(2)
		epost = uppg(1)
		hemsida = uppg(3)
		Session("falt") = ""
	End If
	felet = Session("kontakta_mig")
	Session("kontakta_mig") = ""
    End If
    IF len(felet) <> 0 then
  %>
  <tr> 
    <td colspan="2">
    <%
    Response.Write "<i><font face='verdana' size='1'>" & felet & "</font></i>"
    %>
    </td>
  </tr>
    <%
    End If
    %>
    <tr> 
      <td colspan="2"><font size="1" face="Verdana">Message:<font color="#FF0000">*</font></font></td>
    </tr>
    <tr> 
      <td colspan="2"><textarea name="meddelande" rows="8" cols="58" style="font-family: verdana; font-size: 10px; border: #000000 1px solid"><%=mess%></textarea></td>
    </tr>
    <tr> 
      <td><font size="1" face="Verdana">Name: <font color="#FF0000">*</font></font></td>
      <td><input type="text" size="35" name="namn" value="<%=namn%>" style="font-family: verdana; font-size: 10px; border: #000000 1px solid"></td>
    </tr>
    <tr> 
      <td><font size="1" face="Verdana">E-Mail: <font color="#FF0000">*</font></font></td>
      <td><input type="text" size="35" name="epost" value="<%=epost%>" style="font-family: verdana; font-size: 10px; border: #000000 1px solid"></td>
    </tr>
    <tr> 
      <td><font size="1" face="Verdana">Homepage: </font></td>
      <td><input type="text" size="35" name="hemsida" value="<%=hemsida%>" style="font-family: verdana; font-size: 10px; border: #000000 1px solid"></td>
    </tr>
    <tr> 
      <td></td>
      <td><input type="submit" name="submit" value="Send" style="font-family: verdana; font-size: 10px; border: #000000 1px solid"></td>
    </tr>
  </table>
  </form>
    </td>
  </tr>
</table>
</body>
</html>

Skicka3.asp

<%

' På denna sida finns koden som gör att dina besökares meddelanden skickas till din e-post adress.
' Det är därför viktigt att du anger korrekta uppgifter nedan.

Dim formularsida, mottagare_namn, mottagare_epost, rubrik, mailserver
formularsida = "kontakt.asp" ' Ändra här om du bytt namn på sidan med formuläret
rubrik = "Mail från hemsidan" ' Ändra här om du vill ha annan rubrik på alla mail som skickas
mailserver = "mail.hotmail.com" ' VIKTIGT! Ändra denna till din e-post adress SMTP server!
'(SMTP-server = Server för utgående mail)
'VIKTIGT! Längre ner i koden måste du ställa in vart mailen skall skickas!!

'=================================================================================================
'OBSERVERA!
'Här nedan finns kod som gör att meddelandet skickas och skall fungera helt felfritt, det brukar
'vara fel på mailservern, eller e-post adressen som orsakar fel. Så PILLA INTE i nedanstående kod
'om du inte har goda kunskaper om ASP och vet vad du gör! Längst ner i koden måste du dock ändra
'vart mailen skall skickas. Det står mer om det längre ner.
'=================================================================================================

'Här hämtas informationen och läggs i variabler. 
Dim Meddelande, epost, email, namn, name, hemsida, innehall, sida
Meddelande = Request.Form("meddelande")
epost = Request.Form("epost")
email = Request.QueryString("email")
namn = Request.Form("namn")
name = Request.form("name")
hemsida = Request.Form("hemsida")
innehall = meddelande & "$|$" & epost & "$|$" & namn & "$|$" & hemsida
sida = formularsida

'Här kontrolleras fälten så att alla obligatoriska fält är ifyllda
IF Not Len(Meddelande) <> 0 then
	session("falt") = innehall
	Session("kontakta_mig") = "You forgot to give us a message."
	Response.Redirect sida
ELSEIF Not Len(namn) <> 0 then
	session("falt") = innehall
	Session("kontakta_mig") = "You forgot to give us your name."
	Response.Redirect sida
ELSEIF Not Len(epost) <> 0 then
	session("falt") = innehall
	Session("kontakta_mig") = "You forgot to give us your E-mail address."
	Response.Redirect sida
END IF

'Här kontrolleras e-post adressen
IF Instr(epost,"@") Then
	' inget
ELSE
	session("falt") = innehall
	Session("kontakta_mig") = "Du har angett en felaktig e-post adress"
	Response.Redirect sida
END IF
IF Instr(epost,".") Then
	' inget
ELSE
	session("falt") = innehall
	Session("kontakta_mig") = "Du har angett en felaktig e-post adress"
	Response.Redirect sida
END IF

' Här ändras hemsideadressen så att den alltid inleds med [url]http://[/url]
IF Len(hemsida) <> 0 Then
	IF Left(hemsida,7) = "http://" Then
		webb = Lcase(hemsida)
	ELSE
		webb = "http://" & Lcase(hemsida)
	END IF
END IF

'=================================================================================================
' Här börjar AspSmartMail-koden. Ändra inte nedanstående kod, om du inte har goda kunskaper om ASP
' AspSmartMail-komponentens funktioner. Det är väldigt ovanligt att fel uppstår i nedanstående kod. 
' Om fel uppstår på raden precis nedanför denna kommentar så brukar det bero på att servern INTE 
' HAR STÖD FÖR ASPSMARTMAIL. VIKTIGT! Ändra den rad som har en kommentar UNDER sig!
'=================================================================================================

Set mailare = Server.CreateObject("aspSmartMail.SmartMail")  
	mailare.Server = ""&mailserver&""
	mailare.SenderName = ""&namn&""
	mailare.SenderAddress = ""&epost&""
	mailare.Recipients.Add = ""&email&"", ""&name&""
	' Ovanstående måste du ändra! Det är väldigt viktigt att du ändrar det, annars funkar inte scriptet!
	mailare.Subject = ""&rubrik&""
	
	html = html & "<body bgcolor=#CCCCCC>"
	html = html & "<font face='verdana' size='1'>"
	html = html & Replace(Server.HTMLEncode(Meddelande),vbCrlf,"<br>")
	html = html & "<br><br><br>"
	html = html & "------------------------------------------"
	html = html & "<br>"
	html = html & "<b>Skickades: </b> " & Now
	html = html & "<br>"
	html = html & "<b>Namn: </b> " & namn
	html = html & "<br>"
	html = html & "<b>E-mail: </b><a href=""mailto:"& epost & """>" & epost & "</a><br>"
	html = html & "<br>"
	If Len(hemsida) <> 0 then
	html = html & "<b>Hemsida: </b><a href=" & webb & ">" & webb & "</a><br>" 
	End If
	html = html & "------------------------------------------"
	html = html & "<br>"
	html = html & "</font>"
	mailare.body = ""&html&""
	mailare.Priority = 2
	mailare.ContentType = "text/html" 
	mailare.Charset = "iso-8859-1"
	mailare.SendMail
Set mailare = nothing

Session("kontakta_mig") = "Meddelandet är nu skickat!"
Response.Redirect sida
%>
MogMedlem sedan nov. 2003255 inlägg
#16

Om du skriver:

mailare.Server = mailserver
mailare.SenderName = namn
mailare.SenderAddress = epost
mailare.Recipients.Add = email, name

istället för:

mailare.Server = ""&mailserver&""
mailare.SenderName = ""&namn&""
mailare.SenderAddress = ""&epost&""
mailare.Recipients.Add = ""&email&"", ""&name&""

Funkar det inte då ?
Och förresten, har du kollat att du har rätt värden i alla variabler?

wborgMedlem sedan dec. 2003208 inlägg
#17

skriver jag som du skrev så får jag "sidan kan inte visas" utan
felmeddelande.

Hur kollar jag att jag får rätt värden? response.write?
och vart skriver jag det?

Jag är ganska "grön" på ASP fortfarande, men det är ju därför
såna här forum är så bra ;)

/S

MogMedlem sedan nov. 2003255 inlägg
#18

T.ex.
Ändra action="skicka3.asp" i formuläret till action="tmp.asp".
I tmp.asp skriver du:

<%
epost = Request.Form("epost")
email = Request.QueryString("email")

Response.Write(epost & "<BR>")
Response.Write(email & "<BR>")
%>

För alla variabler du vill kolla.
Ska kolla lite närmare på din kod medans du testar.

wborgMedlem sedan dec. 2003208 inlägg
#19

Nää värdena kommer inte med för
QueryStringarna bara för dom med .Form :(

/S

MogMedlem sedan nov. 2003255 inlägg
#20

Lägg till detta i ditt formulär i kontakt.asp

<INPUT TYPE="hidden" NAME="email" VALUE="<%=Request.QueryString("email")%>">
<INPUT TYPE="hidden" NAME="name" VALUE="<%=Request.QueryString("name")%>">

Ändra i skicka3.asp (rad 28)

email = Request.QueryString("email")

till

email = Request.Form("email")

Förhoppningsvis ska det funka då.

Genererad på 384 ms · cache AV · v20260730165559-full.f96bc7eb