Avatar billede hjemmesiden Nybegynder
28. december 2005 - 14:06 Der er 24 kommentarer

Kan JMAIL sende en form der er delt op på to *.inc-filer?

Jeg har en form, som jeg vil sende med jmail. Den form som jeg agter at sende, er imidlertid for stor til 1 *.asp-side, derfor benytter jeg SSI til at dele min form på to *.inc-sider på denne måde:

<title>Booking14.asp</title>
<body>
<%
side_ID = Request.Querystring("id")
Dim side
Select Case side_ID
Case "BookS1", "BookS2", "BookS3" 'Kun BookS2 & BookS3 indeholder min form
  side = side_ID
  Case Else
    side = "BookS1"
End Select
Server.Execute(side & ".inc")
%>

</div>
<a href="Booking14.asp?id=BookS2">[Trin 1]</a>
<a href="Booking14.asp?id=BookS3">[Trin 2]</a>

</body>

Mit spørgsmål er så om BookS2.inc og BookS3.inc kan samles til en mail som sendes med jmail. Og hvis det kan lade sig gøre, hvordan gør jeg så lige det?

NB: Jeg benytter Azero som understøtter jmail!
Avatar billede hjemmesiden Nybegynder
28. december 2005 - 17:28 #1
Kan nedenstående løkke anvendes og hvordan?

<%
' Løkke der gennemløber alle formularens felter.
For intT = 1 To Request.Form.Count

  ' Vi henter indholdet af feltet ind i en midlertidig variabel (strTemp).
  strTemp = Request.Form.Key(intT)

  ' Vi indsætter et mellemrum forrest i linien indtil linien er
  ' 30 karakterer lang, så alle svarene bliver venstrejusteret i e-mailen.
  Do While Len(strTemp) < 30
    strTemp = strTemp & " "
  Loop

  ' Vi lægger strTemp ind i e-mailen.
  JMail.AppendText(strTemp & ": " & Request.Form.Item(intT) & vbCrLf)

Next
%>
Avatar billede kimovitch Nybegynder
29. december 2005 - 15:51 #2
Du skal på en eller anden måde gemme indholdet af felterne når brugeren går videre til næste side. To meget brugte metoder er:
1) Hidden fields i formularen, så alle felter er med på alle sider. Når du åbner en side indsætter du eventuelle værdier i de skjulte felter og kan så hente dem igen på næste side.
2) Session variable. Brug f.eks. et array til værdierne.

-kim
Avatar billede hjemmesiden Nybegynder
29. december 2005 - 16:51 #3
Det lyder som en god idé. Men jeg kan ikke lige gennemskue hvordan dit forslag skal kodes.

Derudover har jeg et andet problem, da jeg ikke helt forstår opsætningen af jmail på azero´s hjemmeside: http://azero.dk/support/programmering/asp/artikler/jmail/
Avatar billede hjemmesiden Nybegynder
29. december 2005 - 16:58 #4
Jeg har selv forsøgt nedenstående

<form method="post" action="Booking12.asp?id=BookS3">

Tanken var at den så sendte data fra BookS2. til BookS3 hvor datene blev samlet med:

<% ' Get the form data
  name=request.form("name")
  email=request.form("email")
  recipient=request.form("recipient")
  subject    = "Regarding " & Request.Form("subject")
    body=request.form("body")
%>


...Og i toppen af formen på BookS3 denne streng som skulle sende til ifo.asp:

<form method="post" action="info.asp">

der så skulle samle hele mailen. Men det lykkedes ikke rigtigt!
Avatar billede kimovitch Nybegynder
29. december 2005 - 18:56 #5
Der er lissom to ting du skal have løst: Du skal have alle formularværdier til at "følge med" til den side hvor emailen skal sendes. Og du skal have samlet værdierne til en email body. Min første kommentar gik kun på at gemme de indtastede værdier. Hvis vi tager det først vil jeg foreslå at du bruger hidden fields. Det betyder at du på alle sider skal også kode alle felterne fra de foregående side med typen "hidden". Hvis du feks har side 1 med feltet "navn" og side 2 med feltet "adresse" skal side 2 se således ud:

<% navn = server.HTMLEncode(request("navn")) %>
<form>
<input type="hidden" name="navn" value="<% = navn %>">
<input type="text" name="adresse">
</form>

På den måde får du til sidst en formular med alle felter, selv om de er samlet sammen gennem flere sider.

På den side hvor emailen skal sendes skal du så hente alle værdierne og lægge dem ind i en lang tekststreng med eventuelle linieskift osv. Denne streng skal så sættes som emailens "body"

Håber det kastede lidt lys.
-kim
Avatar billede hjemmesiden Nybegynder
29. december 2005 - 20:18 #6
Hej Kim

Det er helt sikkert noget jeg kan forstå og bruge :-) Nu er der bare at få kodet alle siderne rigtigt! Kan du hjælpe mig med det? Ligger lige siderne her hvis du orker:

----------------------------- * ---------------
Booking12.asp


<body>

        <!--#include file="include/menu14.inc"-->
       
<h6><div id="indhold">
<a href="Booking12.asp?id=Book1">Linktekst 1</a>
<a href="Booking12.asp?id=Book2">Linktekst 2</a>
<a href="Booking12.asp?id=Book3">Linktekst 3</a>
<%
side_ID = Request.Querystring("id")
Dim side

Select Case side_ID ' definer de 'lovlige' sider
  Case "Book1", "Book2", "Book3"
    side = side_ID
  Case Else
    side = "BookS1" ' default indhold hvis intet er specifiseret
End Select
Server.Execute(side & ".inc")
%>


</div></h6>

<!--#include file="include/fodnote.inc"-->
</body>

----------------------- * ----------------------
Book1.inc

Vi er lokaliseret på Falster, men spiller gerne over
hele Sjælland, Møn og Lolland-Falster

<p>Tlf. 54 44 65 20</p>

<p>
<a href="mailto:finn.wulff@tele2adsl.dk?subject=Forespørgsel på musik &Body=
            %0D%0D                   
            Hej Tavelin´Band!
            %0D%0D%0D
            Kontakt mig venligst mellem kl.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;og kl.
            %0D%0D%0D
            Mit navn er:
            %0D%0D
            Min adresse er:
            %0D%0D
            Mit telefonnummer er:
            %0D%0D%0D
            Skriv evt. en kort besked her:
            %0D%0D%0D
            Med venlig hilsen">E-mail</a></p>


----------------------- * ---------------------------
Book2.inc

<body>
 
 
<form method="post" action="Booking12.asp?id=Book3">
  Complete this form and click the submit-button. We will answer your
  questions as soon as possible.
  <br><br>
  Your name<br>
  <input type="text" size="25" name="name"><br>
 
  Your email<br>
  <input type="text" size="25" name="email"><br>  Recipient email<br>
  <input type="text" size="25" name="recipient"><br> State your business<br>
  <select name="subject" size="1">
    <option value="help">help
      <option value="tips">tips
      <option value="other">other
  </select>
  <br> Enter your question<br>
  <textarea name="body" cols="40" rows="15" wrap="PHYSICAL"></textarea>
  <br>
  <input type="submit" value="  Submit ">
</form>
 

</body>

----------------------------- * -----------------
Book3.inc


<body>
 
 
<form method="post" action="info.asp">

 
<% name = server.HTMLEncode(request("name")) %>
<% email = server.HTMLEncode(request("email")) %>
<% recipient = server.HTMLEncode(request("recipient")) %>
'Hvad skriver jeg her?
        subject    = "Regarding " & Request.Form("subject")
        body=request.form("body")
<form>
<input type="hidden" name="name" value="<% = name %>">
<input type="hidden" name="email" value="<% = email%>">
<input type="hidden" name="recipient" value="<% = recipient %>">
'Hvad skriver jeg her?
        subject    = "Regarding " & Request.Form("subject")
        body=request.form("body")
  <br> Enter your question<br>
  <textarea name="body" cols="40" rows="15" wrap="PHYSICAL"></textarea>
  <br>
  <input type="submit" value="  Submit ">

</form>
</body>

---------------------------- * -----------------------
info.asp

<%
Set JMail          = Server.CreateObject("JMail.SMTPMail")
  JMail.ServerAddress = "websmtp.rokrod.dk"
  JMail.Sender        = "admin@rockrod.dk"
  JMail.Subject      = "Information"
  JMail.AddRecipient  "admin@rockrod.dk"
  JMail.Priority      = 3
  JMail.AddHeader    "Originating-IP", Request.ServerVariables("REMOTE_ADDR", "Book3")
 
  ' ********** Her starter selve email-en
  JMail.Body = "Dette er linie 1 af brevet" & vbCrLf &_
              "Og her kommer linie 2"
  ' ********** Her slutter selve email-en
 
  JMail.Execute
 
  Set JMail = Nothing
%>

<html><body>

Emailen er sendt!

</body></html>

Ovenstående skulle altså samlet (på et eller andet tidspunkt) gerne udgøre min færdige form :-)
Avatar billede hjemmesiden Nybegynder
29. december 2005 - 20:58 #7
.......glemte lige at skrive at ovenstående er en test og ikke den endelige udgave. Men jeg kan (når ovenstående lykkedes) bruge den som manual til at kode den endelige udgave!
Avatar billede hjemmesiden Nybegynder
30. december 2005 - 00:14 #8
Jeg får denne fejl når jeg sender fra Book3.inc:

HTTP 500,100 - Intern fejl på serveren - ASP-fejl -
Internet Information Services

Tekniske oplysninger (for supportteknikere)

Fejltype:
Serverobjekt, ASP 0177 (0x800401F3)
Ugyldig klassestreng
/info.asp, line 8


Browsertype:
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)

Side:
POST 50 bytes to /info.asp

POST Data:
name=df%E6dfg&email=asdfasf&recipient=asdfsf&body=


.........og line 8 siger:

Set JMail = Server.CreateObject("JMail.SMTPMail")
Avatar billede cht Nybegynder
30. december 2005 - 14:47 #9
Måske kan du bruge Scripting.FileSystemObject til at dele filen op i to med:
http://cht.dk/asp.htm
Avatar billede kimovitch Nybegynder
31. december 2005 - 09:17 #10
Prøv at oprette et Message objekt i stedet:
set JMail = = Server.CreateObject("JMail.Message")

-kim
Avatar billede kimovitch Nybegynder
31. december 2005 - 09:18 #11
Kun et lighedstegn selvfølgelig ;-)
set JMail = Server.CreateObject("JMail.Message")
Avatar billede kimovitch Nybegynder
31. december 2005 - 10:25 #12
>'Hvad skriver jeg her?
>        subject    = "Regarding " & Request.Form("subject")
>        body=request.form("body")

Disse to linier har ikke noget at gøre i din formular. Når du er kommet til at skulle sende emailen skal du bruge JMail.Subject til at skrive emailens emne (overskriften) og JMail.Body til at skrive indholdet af emailen. Men du skal ikke have noget body-felt i din formular, da teksten jo skal sammensættes af alle felterne. F.eks.:

body = "Navn: " & request("navn") & vbCrLf  'indsæt et linieskift efter hver linie
body = body & "Adresse: " & request("adresse") & vbCrLf

JMail.Body = body

-kim
Avatar billede hjemmesiden Nybegynder
31. december 2005 - 12:05 #13
Hej Kim

Jeg får denne fejl efter at have rettet til:
set JMail = = Server.CreateObject("JMail.Message")

Fejlen lyder sådan:
Microsoft VBScript runtime error '800a01b6'
Object doesn't support this property or method: 'ServerAddress'
/info.asp, line 14


...og den er relateret til denne streng i info.asp:
JMail.ServerAddress = "websmtp.rokrod.dk"
Avatar billede hjemmesiden Nybegynder
31. december 2005 - 12:13 #14
..og min info.asp ser sådan ud nu:

<%@ language="vbscript" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
  <head>
<title>info.asp</title>
        <link rel="stylesheet" type="text/css" href="stylesheets/stylesheet14.css">
<%
set JMail = Server.CreateObject("JMail.Message")

  JMail.Logging = True
  JMail.Silent = True


  JMail.ServerAddress = "websmtp.rokrod.dk"
  JMail.Sender        = "admin@rockrod.dk"
  JMail.Subject      = "Information"
  JMail.AddRecipient  "admin@rockrod.dk"
  JMail.Priority      = 3
JMail.AddHeader    "Originating-IP", Request.ServerVariables("REMOTE_ADDR")

  ' ********** Her starter selve email-en
  JMail.Body = "Dette er linie 1 af brevet" & vbCrLf &_
              "Og her kommer linie 2"
  ' ********** Her slutter selve email-en

  If Not JMail.Execute Then
    Response.Write "ERROR MESSAGE: " & JMail.ErrorMessage & "<br/>" & vbCrLf
    Response.Write "ERROR SOURCE: " & JMail.ErrorSource & "<br/>" & vbCrLf
    Response.Write "LOG: <pre>" & JMail.Log & "</pre>" & vbCrLf
  Else
    Response.Write "<html><body>Emailen er sendt!</body></html>" 
  End If

  Set JMail = Nothing
%>
  </head>


<body>


Emailen er sendt!

</body></html>



Du skrev tidligere:

>'Hvad skriver jeg her?
>        subject    = "Regarding " & Request.Form("subject")
>        body=request.form("body")

Disse to linier har ikke noget at gøre i din formular. Når du er kommet til at skulle sende emailen skal du bruge JMail.Subject til at skrive emailens emne (overskriften) og JMail.Body til at skrive indholdet af emailen. Men du skal ikke have noget body-felt i din formular, da teksten jo skal sammensættes af alle felterne. F.eks.:

body = "Navn: " & request("navn") & vbCrLf  'indsæt et linieskift efter hver linie
body = body & "Adresse: " & request("adresse") & vbCrLf

JMail.Body = body

-kim


...jeg kan ikke lige gennemskue hvad det er du mener jeg skal skrive der hvor jeg >'Hvad skriver jeg her?

Ovenstående er tekstfelter som skal med i den endelige mail, hvordan får jeg disse to tekstfelter med?
Avatar billede kimovitch Nybegynder
31. december 2005 - 12:23 #15
Fjern linien med JMail.ServerAddress og erstat JMail.Execute med:
JMail.Send("websmtp.rokrod.dk")
Avatar billede hjemmesiden Nybegynder
31. december 2005 - 12:32 #16
Hej Kim

Efter at have rettet det til får jeg denne fejl:
Microsoft VBScript runtime error '800a01b6'
Object doesn't support this property or method: 'Sender'
/info.asp, line 15

........og line 15 siger:
JMail.Sender        = "admin@rockrod.dk"
Avatar billede kimovitch Nybegynder
31. december 2005 - 12:35 #17
Sorry, rettes til JMail.From = "admin@rockrod.dk"
Hvis domænenavnet er med c, skal serveradressen så ikke være websmtp.rockrod.dk?
Avatar billede hjemmesiden Nybegynder
31. december 2005 - 12:36 #18
...info.asp ser nu sådan ud:

<%@ language="vbscript" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
  <head>
<title>info.asp</title>
        <link rel="stylesheet" type="text/css" href="stylesheets/stylesheet14.css">
<%
set JMail = Server.CreateObject("JMail.Message")

  JMail.Logging = True
  JMail.Silent = True



  JMail.Sender        = "admin@rockrod.dk"
  JMail.Subject      = "Information"
  JMail.AddRecipient  "admin@rockrod.dk"
  JMail.Priority      = 3
JMail.AddHeader    "Originating-IP", Request.ServerVariables("REMOTE_ADDR")

  ' ********** Her starter selve email-en
  JMail.Body = "Dette er linie 1 af brevet" & vbCrLf &_
              "Og her kommer linie 2"
  ' ********** Her slutter selve email-en

  If Not JMail.Send("websmtp.rokrod.dk") Then
    Response.Write "ERROR MESSAGE: " & JMail.ErrorMessage & "<br/>" & vbCrLf
    Response.Write "ERROR SOURCE: " & JMail.ErrorSource & "<br/>" & vbCrLf
    Response.Write "LOG: <pre>" & JMail.Log & "</pre>" & vbCrLf
  Else
    Response.Write "<html><body>Emailen er sendt!</body></html>" 
  End If

  Set JMail = Nothing
%>
  </head>


<body>
        <!--#include file="include/menu14.inc"-->
       
<h6><div id="indhold">

Emailen er sendt!
</div></h6>

<!--#include file="include/fodnote.inc"-->
</body></html>
Avatar billede hjemmesiden Nybegynder
31. december 2005 - 12:45 #19
Du skriver:
Hvis domænenavnet er med c, skal serveradressen så ikke være websmtp.rockrod.dk?

Jeg ved det ikke men scriptet er hentet hos azero som er min hostmaster!

Efter at have rettet dine sidste forslag får jeg ingen fejl. Men mailen er endnu ikke ankommet. Så jeg ved ikke om det fungerer.
Avatar billede hjemmesiden Nybegynder
31. december 2005 - 12:55 #20
Min info.asp ser nu sådan ud:

<%@ language="vbscript" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
  <head>
<title>info.asp</title>
        <link rel="stylesheet" type="text/css" href="stylesheets/stylesheet14.css">
<%
set JMail = Server.CreateObject("JMail.Message")

  JMail.Logging = True
  JMail.Silent = True



  JMail.From = "admin@rockrod.dk"
  JMail.Subject      = "Information"
  JMail.AddRecipient  "admin@rockrod.dk"
  JMail.Priority      = 3
JMail.AddHeader    "Originating-IP", Request.ServerVariables("REMOTE_ADDR")

  ' ********** Her starter selve email-en
  JMail.Body = "Dette er linie 1 af brevet" & vbCrLf &_
              "Og her kommer linie 2"
  ' ********** Her slutter selve email-en

  If Not JMail.Send("websmtp.rokrod.dk") Then
    Response.Write "ERROR MESSAGE: " & JMail.ErrorMessage & "<br/>" & vbCrLf
    Response.Write "ERROR SOURCE: " & JMail.ErrorSource & "<br/>" & vbCrLf
    Response.Write "LOG: <pre>" & JMail.Log & "</pre>" & vbCrLf
  Else
    Response.Write "<html><body>Emailen er sendt!</body></html>" 
  End If

  Set JMail = Nothing
%>
 
  </head>


<body>
        <!--#include file="include/menu14.inc"-->
       
<h6><div id="indhold">

Emailen er sendt!
</div></h6>

<!--#include file="include/fodnote.inc"-->
</body></html>


..og jeg har endnu ikke modtaget mailen. Så jeg tror desværre ikke det virker!
Avatar billede kimovitch Nybegynder
31. december 2005 - 13:18 #21
Hvis du ikke får fejl burde du modtage emailen (på adressen admin@rockrod.dk). Emailadressen skal eksistere for at det skal virke (det er ikke nok med en catch-all på en anden adresse).
Prøv evt at udkommentere denne linie: JMail.Silent = True
Avatar billede kimovitch Nybegynder
31. december 2005 - 13:28 #22
Nu har jeg testet din info.asp side med mine egne email adresse oplysninger, og jeg modtager det den sender, så det kan kun være serveradressen eller email adressen der giver problemer.
Avatar billede hjemmesiden Nybegynder
31. december 2005 - 14:14 #23
Fint nok jeg har også lige modtaget de mails du sendte. Men hvordan pokker finder jeg ud af om det er serveradressen eller email adressen som giver problemer?
Jeg har har en form mail der fungerer men jmailen kan vel ikke umiddelbart kodes på samme måde mht. serveradresse eller email adressen?
Avatar billede hjemmesiden Nybegynder
31. december 2005 - 14:16 #24
Jeg ved at mail adressen er admin@rockrod.dk, så den skulle være ok
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