Avatar billede steen_hansen Forsker
16. juni 2015 - 22:15 Der er 15 kommentarer og
1 løsning

Kan ikke få HTML mail til at virke. w3 JMail v4.5

Vi har et webhotel hos surftown, som benytter w3 JMail v4.5

Jeg har en formular, hvorfra variablerne skal lægges ind i en HTML formular, som skal sendes til givne e-mailadresser. I det nedenstående kan du se hvordan. Jeg kalder dokumentet for customer1.asp. Der er ingen underliggende database; alt bliver taget fra formularen, og skulle gerne sendes i en HTML-mail.

Nu har jeg ikke adgang til mine gamle dokumenter, så det nedenstående er efter hukommelsen, og scrptingen er sikkert lige så hullet som min hukommelse.

Jeg dimensionerer variablerne, og vil egentlig gerne lave et tjek på, om en variabel er tom. Hvis den er det, skal den ikke med i mailen. I det viste eksempel kunne et tænkt eksempel være, at <%=nameofoperator%> gerne måtte være tomt. Men så skal den bare ikke med i mailen.

Jeg lægger HTML/scripts her og håber MEGET på hjælp:

<%

    If Request.Form("mode") = "sendmail" Then

        Dim nameofoperator, opemail, oplocation
        nameofoperator = Request.QueryString("nameofoperator")
        opemail = Request.QueryString("opemail")
        oplocation = Request.QueryString("oplocation")

        'nameofoperator = Form("nameofoperator")
        'opemail = Request.Form("opemail")
        'oplocation = Request.Form("oplocation")

        Set JMail = Server.CreateObject ("JMail.SMTPMail")
        JMail.ServerAddress = "mailxx.surf-town.net"
        JMail.Sender = "noreply@mitdomæne.dk"
        JMail.Subject = "Indrapportering fra "' & oplocation & '""
        JMail.AddRecipient "modtager@hansdomæne.dk"
        JMail.Priority = 1

            JMail.HTMLBody = "<html><br><br><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><br><br><head></head><br><br><body><br><br>"

        If nameofoperator <> "" Then

            JMail.HTMLBody = "<div style="width: 250px; float: left;">Navn på operatør:</div>"
            JMail.HTMLBody = "<div style="width: 850px; float: right;"><%=nameofoperator%></div>"
            JMail.HTMLBody = "<div class style="clear: both;"></div>"

        End If

            JMail.HTMLBody = "<div style="width: 250px; float: left;">E-mailadresse:</div>"
            JMail.HTMLBody = "<div style="width: 850px; float: right;"><%=opemail%></div>"
            JMail.HTMLBody = "<div class style="clear: both;"></div>"
            JMail.HTMLBody = "<div style="width: 250px; float: left;">Lokation:</div>"
            JMail.HTMLBody = "<div style="width: 850px; float: right;"><%=oplocation%></div>"
            JMail.HTMLBody = "<div class style="clear: both;"></div>"
            JMail.HTMLBody = "</body></html>"

        JMail.Execute
        Set Jmail = Nothing


        Response.Redirect = "/"

    End If

%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">


<html>

<head>
<meta http-equiv="Expires" CONTENT="Fri, Jun 12 1981 08:20:00 GMT">
<meta http-equiv="Cache-Control" CONTENT="no-store">
<meta http-equiv="Cache-Control" CONTENT="no-cache">
<meta http-equiv="Pragma" CONTENT="no-cache">
<meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
<meta http-equiv="imagetoolbar" content="no">
<meta http-equiv="Content-language" content="dan">
<meta name="robots" content="all">
<link rel="stylesheet" type="text/css" href="/includes/main.css">
<title>Indrapportér</title>
</head>

<body onload="document.frmReport.nameofoperator.focus();">

<div class="divMain">
    <div class="divBanner headline">BANNER HER</div>
    <form name="frmReport" method="get" action="/customers/customer1.asp">
    <div class="divContainer">
        <div class="divContainerLeft">&nbsp;</div>
        <div class="divContainerRight"><input type="hidden" name="mode" value="sendmail"></div>
        <div class="clearer"></div>
        <div class="divHeadline headline">Dine data</div>
        <div class="divContainerLeft">Navn:</div>
        <div class="divContainerRight"><input type="text" name="nameofoperator" id="nameofoperator" class="inputoperator"></div>
        <div class="clearer"></div>
        <div class="divContainerLeft">Initialer:</div>
        <div class="divContainerRight"><input type="text" name="opemail" id="opemail" tabindex="2" class="inputoperator"></div>
        <div class="clearer"></div>
        <div class="divContainerLeft">Lokation:</div>
        <div class="divContainerRight"><input type="text" name="oplocation" id="oplocation" tabindex="3" class="inputoperator"></div>
        <div class="clearer"></div>
        <div class="divContainerLeft">&nbsp;</div>
        <div class="divContainerRight"><input type="submit" name="sendmail" tabindex="4" class="btn" value="Indrapportér"></div>
        <div class="clearer"></div>
    </div>
    </form>
</div>

</body>

</html>
Avatar billede steen_hansen Forsker
16. juni 2015 - 22:20 #1
Jeg fik kigget lidt på HTML i JMail-scriptet, og her kan jeg se, at jeg nok kan droppe <br><br> JMail.HTMLBody = "<html><br><br><!DOCTYPE HTML ...."

Se venligst bort fra <br><br>
Avatar billede keysersoze Guru
17. juni 2015 - 09:14 #2
"Kan ikke få HTML mail til at virke" - hvilket betyder at? Du får en fejl? Ingen mail kommer frem? eller?
Avatar billede steen_hansen Forsker
17. juni 2015 - 10:47 #3
Der sker intet, når der submittes.
Avatar billede keysersoze Guru
17. juni 2015 - 10:53 #4
Intet? link?
Avatar billede steen_hansen Forsker
17. juni 2015 - 11:02 #5
Jeg har fundet tutorials flere steder på nettet, men ingen af dem synes at virke. Sikkert fordi jeg får angivet et eller andet forkert et eller andet sted. Men jeg har dog tidligere lavet en del. Godt i ren tekst, og ikke HTML. Har du od på at vise noget, der virker?
Avatar billede steen_hansen Forsker
17. juni 2015 - 11:02 #6
Jeg har pillet det ned igen, starter from scratch.
Avatar billede steen_hansen Forsker
17. juni 2015 - 11:05 #7
Jeg kunne godt tænke mig at se et helt konkret eksempel. Et lille eksempel á la det ovenstående: Formularfelter udfyldes og sendes i en HTML-mail, pænt opsat med DIVs eller i en lille tabel. Ikke noget stort og prangende. Bare grundprincipperne.
Avatar billede keysersoze Guru
17. juni 2015 - 11:18 #8
Alle grundprincipperne kan JMails dokumentation forklare meget bedre end mig - men det er umuligt at fejlsøge noget uden at vide hvad der sker af fejl. Først siger du at det ikke virker uden at fortælle hvilken fejl der reelt er tale om - dernæst siger du at der ikke sker noget når der ikke submittes men hvad betyder det egentlig?
Avatar billede steen_hansen Forsker
17. juni 2015 - 20:07 #9
Det betyder, at der intet sker, når jeg submitter, og der kommer heller ingen fejl. Der sker intet, mail bliver ikke sendt afsted/modtaget. Intet, udover, at GET henter values fra formularfelterne.

Hvis du tager udgangspunkt i det nedenstående, hvor hopper kæden så af? Når jeg lægger customer1.asp op og trykker på submit/sendmail, sker der absolut intet.

Jeg har forsøgt mig med et par tutorials:
http://www.dimac.net/products/w3JMail/Version37/Examples/simple.htm (tekst)
http://www.dimac.net/Products/w3JMail/Version43/Examples/HTMLemail.htm (HTML)

Men det virker ikke. Så jeg gør helt åbenlyst et eller andet galt.

Jeg udfylder felterne, trykker på Submit - absolut intet sker. Der kommer heller ingen fejl.

Jeg håber jeg har forklaret problemstillingen.

Jeg skal lige nævne, at jeg er klar over man ikke kan sætte dette ind i ASP på samme måde, som jeg har gjort i det nedenstående:

<%=opemail%>

Det er kun for at indikere, at det er denne value, der skal lægges ind i mailen. Den håber jeg at få hjælp til. Jeg har forsøgt bare at skrive Steen i stedet for <%=nameofoperator%>, og ikke hvad der kommer fra GET, bare for at se, om jeg kunne få det til at virke.

Jeg håber jeg har forklaret mit problem ordentligt.

Koden/HTML igen (rettet i forhold til det ovenstående:

<%

    If Request.Form("mode") = "sendmail" Then

        Dim nameofoperator, opemail, oplocation
        nameofoperator = Request.QueryString("nameofoperator")
        opemail = Request.QueryString("opemail")
        oplocation = Request.QueryString("oplocation")

        'nameofoperator = Form("nameofoperator")
        'opemail = Request.Form("opemail")
        'oplocation = Request.Form("oplocation")

        Set JMail = Server.CreateObject ("JMail.SMTPMail")
        JMail.ServerAddress = "mailxx.surf-town.net"
        JMail.Sender = "noreply@mitdomæne.dk"
        JMail.Subject = "Indrapportering fra "' & oplocation & '""
        JMail.AddRecipient "modtager@hansdomæne.dk"
        JMail.Priority = 1

            JMail.HTMLBody = "<html><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><head></head><body>"
            JMail.HTMLBody = "<div style="width: 250px; float: left;">Navn på operatør:</div>"
            JMail.HTMLBody = "<div style="width: 850px; float: right;"><%=nameofoperator%></div>"
            JMail.HTMLBody = "<div style="clear: both;"></div>"
            JMail.HTMLBody = "<div style="width: 250px; float: left;">E-mailadresse:</div>"
            JMail.HTMLBody = "<div style="width: 850px; float: right;"><%=opemail%></div>"
            JMail.HTMLBody = "<div style="clear: both;"></div>"
            JMail.HTMLBody = "<div style="width: 250px; float: left;">Lokation:</div>"
            JMail.HTMLBody = "<div style="width: 850px; float: right;"><%=oplocation%></div>"
            JMail.HTMLBody = "<div style="clear: both;"></div>"
            JMail.HTMLBody = "</body></html>"

        JMail.Execute
        Set Jmail = Nothing


        Response.Redirect = "/"

    End If

%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">


<html>

<head>
<meta http-equiv="Expires" CONTENT="Fri, Jun 12 1981 08:20:00 GMT">
<meta http-equiv="Cache-Control" CONTENT="no-store">
<meta http-equiv="Cache-Control" CONTENT="no-cache">
<meta http-equiv="Pragma" CONTENT="no-cache">
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<meta http-equiv="imagetoolbar" content="no">
<meta http-equiv="Content-language" content="dan">
<meta name="robots" content="all">
<link rel="stylesheet" type="text/css" href="/includes/style.css">
<title>Indrapportér</title>
</head>

<body onload="document.frmReport.nameofoperator.focus();">

<div class="divMain">
    <div class="divBanner headline">BANNER HER</div>
    <form name="frmReport" method="get" action="/customers/customer1.asp">
    <div class="divContainer">
        <div class="divContainerLeft">&nbsp;</div>
        <div class="divContainerRight"><input type="hidden" name="mode" value="sendmail"></div>
        <div class="clearer"></div>
        <div class="divHeadline headline">Dine data</div>
        <div class="divContainerLeft">Navn:</div>
        <div class="divContainerRight"><input type="text" name="nameofoperator" id="nameofoperator" class="inputoperator"></div>
        <div class="clearer"></div>
        <div class="divContainerLeft">Initialer:</div>
        <div class="divContainerRight"><input type="text" name="opemail" id="opemail" tabindex="2" class="inputoperator"></div>
        <div class="clearer"></div>
        <div class="divContainerLeft">Lokation:</div>
        <div class="divContainerRight"><input type="text" name="oplocation" id="oplocation" tabindex="3" class="inputoperator"></div>
        <div class="clearer"></div>
        <div class="divContainerLeft">&nbsp;</div>
        <div class="divContainerRight"><input type="submit" name="sendmail" tabindex="4" class="btn" value="Indrapportér"></div>
        <div class="clearer"></div>
    </div>
    </form>
</div>

</body>

</html>
Avatar billede steen_hansen Forsker
17. juni 2015 - 20:21 #10
PS: Jeg skal ikke tjekke på, om variablerne er tomme. Alle values skal sendes i mailen. Så er jeg ude over at skulle lave det tjek.
Avatar billede keysersoze Guru
18. juni 2015 - 09:51 #11
Sorry, men jeg er faktisk stadig ikke helt sikker på hvad der sker - men jeg gætter på at din side submittes, dine værdier kan ses i adresselinjen men at du ender på formularen igen.

For at tage de mest oplagte fejl;

- Benyt post i stedet for get og benyt så Request.Form hele vejen igennem koden.
- Ved at du hele tiden skriver "JMail.HTMLBody =" overskriver du forrige værdi og du ender med kun at sende "</body></html>" så opbyg i stedet din markup i en string og send den variabel afsted.

Hvis du så stadig er i tvivl om hvor langt din kode egentlig når så udskriv nogle debug-hjælpevariabler undervejs fx vha Response.Write "1" uden for din if og Response.Write "2" inden for din if og er du i tvivl om hvad dine variabler indeholder så udskriv dem, fx Response.Write "3" & Request.Form("mode")
Avatar billede steen_hansen Forsker
18. juni 2015 - 13:34 #12
Meget flot, keysersoze.

For lige at starte med JMail:

"JMailHTMLBody" skal ind første gang. Efterfølgende skal jeg benytte ...?
Avatar billede steen_hansen Forsker
20. juni 2015 - 10:24 #14
1.
Jeg har sådan set prøvet det script, se #9 :) Jeg indsatte én JMail.HTMLBody, og indtastede bare "Test" i body, så den ikke fejlede på values.

2.
Det her virker ikke. Siden kan ikke vises. Hvorfor? Jeg har REM'et ud.

/testsend/default.asp ser således ud:




<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<%

'    If Request.Form("mode") = "sendmail Then
'        a1 = Request.Form("a1")
'        a2 = Request.Form("a2")
'        a3 = Request.Form("a3")
'        a4 = Request.Form("a4")
'        a5 = Request.Form("a5")
'    End If

%>

<html>

<%'=a1%><%'=a2%><%'=a3%><%'=a4%><%'=a5%>

<head>
<meta http-equiv="Expires" CONTENT="Fri, Jun 12 1981 08:20:00 GMT">
<meta http-equiv="Cache-Control" CONTENT="no-store">
<meta http-equiv="Cache-Control" CONTENT="no-cache">
<meta http-equiv="Pragma" CONTENT="no-cache">
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<meta http-equiv="imagetoolbar" content="no">
<meta http-equiv="Content-language" content="dan">
<meta name="robots" content="all">
<link rel="stylesheet" type="text/css" href="/includes/style.css">
<title>Formular til afsendelse af mails</title>
</head>

<body>

<form name="frmSend" method="POST" action="/testsend/default.asp">
    <input type="hidden" name="mode" id="mode" value="sendmail">
    <input type="text" name="a1" id="a1"><br>
    <input type="text" name="a2" id="a2"><br>
    <input type="text" name="a3" id="a3"><br>
    <input type="text" name="a4" id="a4"><br>
    <input type="text" name="a5" id="a5"><br><br>
    <input type="submit" value="Send mail">
</form>

</body>

</html>
Avatar billede steen_hansen Forsker
20. juni 2015 - 11:19 #15
Der manglede en afsluttende " i

If Request.Form("mode") = "sendmail Then

Prøver mail af.
Avatar billede steen_hansen Forsker
20. juni 2015 - 12:45 #16
Jeg lukker denne, og tager pointene selv i første omgang. Jeg vil ikke på kant med loven :)

Jeg har oprettet et nyt spørgsmål, da folk nok ikke vil kigge på spørgsmålet, når der er afgivet svar. Jeg håber du vil kigge på det nye spørgsmål.

http://www.eksperten.dk/spm/1004408#reply_8186035
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



IT-JOB

Udviklings- og Forenklingsstyrelsen

IT-generalister til rollen som systemejer

Erhvervsakademi Aarhus

Underviser til it-teknologuddannelsen

Udviklings- og Forenklingsstyrelsen

Testmanager til Partsrepræsentation