Tja!
Har gjort en grej för anmälan till nyhetsbrev. Det hela är väldigt simpelt, man fyller i sin mailadress i en ruta och trycker på "Skicka". Ett mail skickas då iväg till en adress där den emailadress man fyllt i visas.
Problemet är bara att det man fyllt i aldrig kommer med i mailet.
Det är inget fel på formuläret, för jag kan få ut värdet av textrutan (mailaderss man angav) m.h.a en alert(""); i javascript.
Även fast jag skrivet ett fast värde på variablen i aspscriptet, så skickas det inte med i mailet, det hela är väldigt kosntigt, för jag hittar inte några fel i koden:
Set msg = Server.CreateObject("Jmail.Message")
strMail = Request.Form("strMail")
'strMail = "Blahh"
msg.From = "NoReply@MickeA.com"
msg.Subject = "Nyhetsbrev!"
' msg.Addrecipient "Info@Allinmind.com"
msg.Addrecipient "Info@MickeA.com"
'sylver.webhotellet.net
Set Obj = Server.CreateObject("Scripting.FileSystemObject")
Set objFile = Obj.OpenTextFile(Server.MapPath("inc\mail_doc_head.inc"))
txtHeader = objFile.ReadAll
objFile.Close
Set Obj = Nothing
msg.Body = txtHeader & VbCrLf & strMail & VbCrLf & VbCrLf & "Den här tjänsten tillhandahålles av MickeA.com, det går ej att besvara detta mail!"
If Not msg.Send("smtp.bredband.net") Then %>
<table cellpadding="0" cellspacing="0" style="width: 180px; height: 127px;">
<tr>
<td class="text" style="text-align: center; vertical-align: middle; width: 180px; font-size: 7pt;">Ett fel uppstod.</td>
</tr>
</table>
<%
Else
%>
<table cellpadding="0" cellspacing="0" style="background-image: url('pics/nLetter.gif'); width: 180px; height: 127px;">
<tr>
<td class="text" style="padding-left: 28px; padding-top: 35px;">
<table cellpadding="0" cellspacing="0">
<tr>
<td class="text" style="height: 25px;"><img src="pics/nl2.gif" style="border 0px;" alt=""></td>
</tr>
</table>
</td>
</tr>
</table>
<%
End If
Är det någon som kan hitta fel i koden ovan och hjälpa mig med det här?`
Kommer alltså allt utom innehållet i strMail med i mailet?
Precis, allt utom värdet av strMail. Jag provade att skicka med CDONTS istället och bytte Request.Form till Request.Querystring och skickade med en adress i adressfältet.
Då kommer allt med och funkar precis som det ska. Det konstiga är bara att det inte kan bero på stavfel el. liknande, eftersom "rätt" värde dyker upp vid en alert.
Kan det vara en bugg i jMail komponenten? Jag vet, låter väldigt långsökt, för jag har provat samma script (med samma resultat) på flera servrar.
msg.Body = txtHeader & VbCrLf & strMail & VbCrLf & VbCrLf & "Den här tjänsten tillhandahålles av MickeA.com, det går ej att besvara detta mail!"
Skriver:
strTmp = txtHeader & VbCrLf & strMail & VbCrLf & VbCrLf & "Den här tjänsten tillhandahålles av MickeA.com, det går ej att besvara detta mail!"
msg.Body = strTmp
Hmm, vad skulle det spela för roll? Är det något spec. som blir annorlunda då?
För felet *bör* inte ligga där, i.o.m att allt i strängen hänger med utom strMail. Provade att ersätta strMail med Request.Form("strMail") och då blev det samma resultat, dvs. ingenting alls.
Hmm, nu börjar jag bli sne på det här, nu är jag 100% säker på att det inte beror på jMail.
Jag har nämligen tänkt om lite, så istället så sparar jag alla emailadresser i en accessdatabas, så att man i ett senare skede kan skapa en adresslista vid varje utskick.
Problemet nu är bara att det skapas en tom post i databasen, strMail innehåller alltså inte värdet nu heller.
Formuläret ser ni i koden ovan och när formuläret postas har jag följande javascript för att validera formuläret:
<!--
function frmNL(){
var f = document.frm_nl;
if(f.strMail.value == "" || f.strMail.value == "Din e-mailadress"){
alert("Du måste fylla i en mailadress");
return false;
}
//alert(f.strMail.value);
// f.submit();
}
//-->
Nu är alltså alert(""); i koden ovan bortkommenterat, men kör jag med den så visas den adress man matat in där, alltså, såhär långt inget fel.
Men vad som händer sen och vad det kan bero på är oklart.
Kontrollera att du får med det du borde. Lägg sedan på javascript-kollen vid submit. Fungerar det fortfarande? Osv, osv.
Men strMail och dess värde får jag med i javascriptet, kör jag en alert(); på strMail visas det värde jag matat in i fältet.
Om jag därimot kör en Response.Write(Request.Form("strMail")) så skrivs inget alls ut, det är alltså tomt.
Det är det som är det sjuka, i.o.m att värdet visas m.h.a javascript försvinner det strax därefter.
Jag ändrade 'action' i formuläret, från "default.asp?mP=home" till "?mP=home" och då började det plötsligt funka.
Hmm, undra om det här kan ha med en bugg i IE att göra, eller vad det nu kan vara, har aldrig ngnsin varit med om något liknande, huvudsaken är iaf. att det funkar nu.
Tack @nders för alla tips och idéer!
266 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25