Avatar billede tgaard Nybegynder
01. juni 2007 - 14:38 Der er 10 kommentarer og
1 løsning

Send en mail med brugernavn og adgangskode

Jeg har en fil (glemtpw.asp) - som ser således ud:


<html>
<head>
<title>Hent password</title>
</head>
<body>
<% If Request.QueryString("modtager")="" Then%><font face="Verdana" size="1"><br>
Indtast din email-adresse, så sender vi dit
brugernavn og password<br>
med det samme.
<BR>
<br>
Med venlig hilsen <BR><b>Tinghøjgård<br>
<br>
</b>Jan Schneider<br>
webansvarlig<br>
&nbsp;</font><form method="GET" action="glemtpw.asp">
  <div align="center"><table border="0">
    <tr>
      <td width="200" align="left" style="float: left">
        <p><font face="Verdana" size="1">Din e-mail adresse: </font>
      </td>
      <center>
      <td width="200" align="left" style="float: left">
        <font size="1" face="Verdana"><input type="text" name="modtager" size="40"></font></td>
    </tr>
        <tr>
      <td width="200" align="left" style="float: left"></td>
      <td width="200" align="left" style="float: left">
        <font size="1" face="Verdana">
        <input type="submit" value="Send" size="20" style="font-family: Verdana; font-size: 8pt"></font></td>
    </tr>
  </table>
      <font face="Verdana" size="1">
  </center></font></div><p align="left">&nbsp;</p>
</form>

<font face="Verdana" size="1">

<% Else
Dim Forbind,Find,Spoerg,Emne,Indhold,Modtager,Afsender,Postmedd

Set Forbind = Server.CreateObject("ADODB.Connection")

Spoerg = "SELECT * FROM User WHERE Email='varde@varde.nu"
Set Find = Forbind.Execute(Spoerg)
Response.Write Spoerg
Afsender = "fonden@varde.nu"
Modtager = Find("Email")
Emne = "Dit brugernavn og password fra Forum"
Indhold = "Dit brugernavn er: THG" & VbCrLf & "Dit password er: kontor" & Find("Password") & VbCrLf &"Venlig hilsen" & VbCrLf & "Forum"

Set postmedd = Server.CreateObject("CDONTS.NewMail")
postmedd.From = Afsender
postmedd.To = Modtager
postmedd.Subject = Emne
postmedd.Body = Indhold
postmedd.Send
Set postmedd = Nothing

Response.Write ("Meddelelsen er sendt til din email adresse")

End If

%>
</font>
</body>
</html>


Den vil ikke sende mailen til modtageren. I stedet får jeg: Siden kan ikke vises og følgende sætning i adressefeltet:
http://www.varde.nu/glemtpw.asp?modtager=varde@varde.nu

Desuden fortæller den mig flg.: Der opstod en intern HTTP 500-serverfejl - Microsoft Internet Explorer

Hvad kan der være galt?
Avatar billede tgaard Nybegynder
01. juni 2007 - 14:39 #1
Er der noget galt i linien: Set postmedd = Server.CreateObject("CDONTS.NewMail")
Avatar billede w13 Novice
01. juni 2007 - 14:45 #2
Spoerg = "SELECT * FROM User WHERE Email='varde@varde.nu"
mangler en apostrof.
Spoerg = "SELECT * FROM User WHERE Email='varde@varde.nu'"
Avatar billede tgaard Nybegynder
01. juni 2007 - 14:57 #3
Har rettet....men har stadig samme problem
Avatar billede jakob_f Nybegynder
01. juni 2007 - 15:54 #4
Min internetudbyder kræver at man angiver en host for at sende en mail;

postmedd.Host = "server URI"

jeg har gør det typisk ligen inden kaldet til send (postmedd.Send). Måske hjælper dette.

Herudover gemmer du ikke din QueryString, du har hardcoded "varde@varde.nu" i SQL forespørgsel.

Håber det kan bruges til noget ;-)
Avatar billede tgaard Nybegynder
01. juni 2007 - 16:29 #5
Er ikke særlig erfaren i dette....har prøvet at rette det til...uddrag følger herunder:

<% Else
Dim Forbind,Find,Spoerg,Emne,Indhold,Modtager,Afsender,Postmedd

Set Forbind = Server.CreateObject("ADODB.Connection")

Spoerg = "SELECT * FROM User WHERE Email='varde@varde.nu'"
Set Find = Forbind.Execute(Spoerg)
Response.Write Spoerg
Afsender = "fonden@varde.nu"
Modtager = Find("Email")
Emne = "Dit brugernavn og password fra Forum"
Indhold = "Dit brugernavn er: THG" & VbCrLf & "Dit password er: kontor" & Find("Password") & VbCrLf &"Venlig hilsen" & VbCrLf & "Forum"

Set postmedd = Server.CreateObject("CDONTS.NewMail")

postmedd.From = Afsender
postmedd.To = Modtager
postmedd.Subject = Emne
postmedd.Body = Indhold
postmedd.Host = "server URI"
postmedd.Send
Set postmedd = Nothing

Response.Write ("Meddelelsen er sendt til din email adresse")

End If

%>


Men det virker stadig ikke. Vores internetudbyder er TDC og vores hjemmeside er hostet af Azero.
Avatar billede jakob_f Nybegynder
01. juni 2007 - 17:07 #6
"server URI" skal ikke taget helt så bogstaveligt :) Det skal være servernavnet på den udgående post server. Jeg benytter "mailout.one.com" som mit webhotel har stillet til rådighed for deres kunder. Men det afgænger af dit webhotel. Måske har de en support der kan hjælpe dig med dette eller måske står det på deres hjemmeside et sted.

Jeg lagde også lige mærke til at du stadig ikke benytter den e-mail adresse fra din QueryString men en du har skrevet direkte i din SQL forespørgsel:

Spoerg = "SELECT * FROM User WHERE Email='varde@varde.nu'"

Det kunne istedet være noget i stil med:

Dim modtagerEmail
modtagerEmail = Request.QueryString("modtager")
Spoerg = "SELECT * FROM User WHERE Email='" & modtagerEmail & "';"

Nu lagde jeg også lige mærke til at du ikke har sluttet din SQL forespørgsel med et semikolon. hvis ikke det er med bliver forespørgslen ikke eksekveret. Det kan være at der er her hele fejlen ligger. Prøv lige at rette det og udkommenter:

postmedd.Host = "server URI"

Der er næmlig ikke alle webhoteller der kræver denne.
Avatar billede jakob_f Nybegynder
01. juni 2007 - 17:16 #7
Jeg bemærkede også lige at hvis nu du prøver at hente en bruger fra databasen der ikke findes (det kunne være en der ved en fejl indtaster en forkert e-mail adresse), så vil dit resultset være tomt, men du prøver aligevæld at bruge det.

løsningen på det er at lave et tjek på om der er noget i reslutsættet.

f.eks:
Set Find = Forbind.Execute(Spoerg)
    if not Find.EOF Then
    Response.Write Spoerg
    Afsender = "fonden@varde.nu"
    Modtager = Find("Email")
    Emne = "Dit brugernavn og password fra Forum"
    Indhold = "Dit brugernavn er: THG" & VbCrLf & "Dit password er: kontor" & Find    ("Password") & VbCrLf &"Venlig hilsen" & VbCrLf & "Forum"

Else
response.write("den indtastede e-mail adresse findes ikke.")

End if
Avatar billede tgaard Nybegynder
01. juni 2007 - 17:19 #8
Hvis ikke jeg kan skrive

Spoerg = "SELECT * FROM User WHERE Email='varde@varde.nu'"

Hvordan finder man så ud af, om det er en "lovlig" person, der skal ha' brugernavn og adgangskode?....skal jeg bruge noget database (f.eks. Access)?
Avatar billede jakob_f Nybegynder
01. juni 2007 - 17:28 #9
Du har skrevet:
Spoerg = "SELECT * FROM User WHERE Email='varde@varde.nu'"

For der første skal den afsluttes med et semikolon:
Spoerg = "SELECT * FROM User WHERE Email='varde@varde.nu';"

Herved kan den eksekveres.

Med denne forespørgsel vil du altid slå den samme person op, så der er der ikke noget i vejen med. Men jeg går ud fra, at brugeren der har glæmt sit password skal indtaste sin e-mail adresse i din form. Når vedkommende gør der er der mulighed for at vedkommende taster forkert (der er jeg i hvert fald kommet til ind i mellem ;-).

Hvis der kommer en forkert indtastning vil svaret, som du gemmer i Find være tomt. og når du så bruger Find senere i din kode vil siden gå ned fordi den jo ikke kan hente noget fra en tom variabel.

Men start med at sætte et semikolon bag din sql forespørgsel ;-)
Avatar billede The Real Yoda Juniormester
01. juni 2007 - 18:46 #10
nu er der så en anden fejl på din side .. hvordan ser din kode ud nu ?..

i linjen
postmedd.Host = "server URI"
skal "server uri" erstattes med adressen på den mailserver du forsøger at sende igennem, hvilket altså kommer an på hvilken udbyder du har..

hvor ligger din kode ?.. hos hvilken udbyder ?
Avatar billede tgaard Nybegynder
05. juni 2007 - 01:09 #11
Kan ikke få løst problemet, så jeg lukker spørgsmålet
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