Avatar billede degnens Mester
29. oktober 2003 - 14:24 Der er 14 kommentarer og
1 løsning

html med ASPMail

Jeg har oprettet en asp-side, som sender vort nyhedsbrev til aktuelle abonnenter i min database. Desuden har jeg lavet en afsenderside, hvor jeg indtaster "subject" og "message-body" (HTML). Derefter trykker jeg på "send"-knappen og mailen skulle være sendt. Men, men, men... Kun hvis jeg sender en meget simpel html-mail fungerer det. Så snart det er html som indeholder en "form", sker der slet ingen ting når jeg klikker på "send"-knappen. Jeg har lagt seneste nyhedsbrev ind, hvor jeg har fjernet en gif-animation, et par knapper og en form. Men stadig sker der ingenting. Er der nogen som har en idé om, hvad det kan være der yderligere skal fjernes - eller endnu bedre, hvordan jeg får det til at virke, så det kan sende alle html-tekster, uanset hvor avancerede de er?

M.v.h.
Lars Mollerup-Degn
Avatar billede degnens Mester
29. oktober 2003 - 14:27 #1
Undskyld, jeg skulle måske fortælle, at min kode ser således ud:

<HTML>
<HEAD>
    <TITLE>Afsend nyhedsbrev</TITLE>
<meta name="Generator" content="Stone's WebWriter 4">
</HEAD>
<BODY>



<%
Dim Mailer
Set Mailer = Server.CreateObject("SMTPsvg.Mailer")
Mailer.FromName  = "Areopagos"
Mailer.FromAddress= "lmd@areopagos.dk"
Mailer.RemoteHost = "mail.areopagos.dk"

 

Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; " & "DBQ=" & server.mappath("newsletter.mdb")
Conn.Open DSN


strSQL = "Select * from grunddata"
Set rs = Conn.Execute(strSQL)

Do
  ' Tilføj modtager
Mailer.AddRecipient rs("name"), rs("email")
  rs.MoveNext
Loop While Not rs.EOF

Mailer.ContentType = "text/html"
Mailer.Subject = Request.QueryString("Subject")
Mailer.BodyText = Request.QueryString("MsgBody")

' Send e-mail og skriv status
if Mailer.SendMail then
  Response.Write "Mailen er afsendt..."
else
  Response.Write "Der skete en fejl: " & Mailer.Response
end if

' Fjern objekt igen
Set Mailer = Nothing
%>
Avatar billede kovalt Nybegynder
29. oktober 2003 - 14:27 #2
Måske kan det skyldes at du har en form på din afsender side, som gaber over den form du har i din mail. Altså noget i stil med:

<form action="" method="post">

<form action="" name="mailForm" method="post">
</form>

</form>

jeg er ikke sikker på at dette kan lade sig gøre

/Kovalt
Avatar billede kovalt Nybegynder
29. oktober 2003 - 14:29 #3
Jeg synes i hvert fald at jeg har erfaringer med at forms gerne skal afsluttes inden nye påbegyndes
Avatar billede degnens Mester
29. oktober 2003 - 14:44 #4
Det lyder som noget i den retning. Det var i hvert fald hvad jeg fandt ud af, da jeg forsøgte med en meget simpel html-tekst, hvor der ikke var andet end lidt formateret tekst. Den gik fint igennem. Når jeg indsatte en form indeholdende en knap, kunne den ikke.

Findes der en anden og bedre måde at sende html-mails på? Jeg syntes at læse mig frem til, at der i AspMail er en funktion som hedder noget noget i retning af "GetBodyTextFromURL" eller sådan noget. Men den fungerer så vidt jeg har forstået kun sammen med PGPMail - hvilket jeg ikke kender noget til og opgav at sætte op. Men hvis du ved hvordan man får den funktion til at virke, tror jeg det ville kunne fungere. Eller hvad?

Lars
Avatar billede kovalt Nybegynder
29. oktober 2003 - 14:51 #5
hvordan kommer du ind på den kode som du skrev øverst. Submitter du en form som sender dig videre til den kode du har i toppen?

Jeg kunne også forestille med at der kunne opstå problemer i forbindelse med

Mailer.BodyText = Request.QueryString("MsgBody")

altså at sende hele indholdet af mailen i en querystring.... kan du ikke bruge en request.form?
Avatar billede kovalt Nybegynder
29. oktober 2003 - 14:51 #6
vil du evt. sende hele koden... altså også den del hvor du indtaster selve mailen, der skal sendes
Avatar billede degnens Mester
29. oktober 2003 - 15:09 #7
Det er rigtigt, at det er i forbindelse med QueryString at det går galt, når det bliver for kompliceret. Jeg udfylder det ved at submitte en form, ja. Det valgte jeg, fordi det ikke virkede at paste hele min html-kode direkte ind efter "Mailer.BodyText =" Det var som om den kun registrerede den første halve linie?

html-siden jeg taster fra ser således ud (og fungerer altså ved meget simpel html i MsgBody):

<HTML>
<HEAD>
<TITLE>Afsend mail</TITLE>
</HEAD>
<BODY>
<FORM ACTION="send mail.asp" NAME="Send mail">
Emne: <input type="text" name="Subject" size="60" align="right"><br>
HTML kode: <textarea wrap="off" name="MsgBody"></textarea>
<br>
<input type="submit" value="Send mail">
</FORM>
</BODY>
</HTML>

Hvordan/hvor skulle jeg integrere request.form, hvis jeg skulle afprøve det? Og hvilken form skulle den få sin information fra?
Avatar billede kovalt Nybegynder
29. oktober 2003 - 15:16 #8
<% if request.form("subject") <> "" AND request.form("MsgBody") <> "" then

Dim Mailer
Set Mailer = Server.CreateObject("SMTPsvg.Mailer")
Mailer.FromName  = "Areopagos"
Mailer.FromAddress= "lmd@areopagos.dk"
Mailer.RemoteHost = "mail.areopagos.dk"

Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; " & "DBQ=" & server.mappath("newsletter.mdb")
Conn.Open DSN


strSQL = "Select * from grunddata"
Set rs = Conn.Execute(strSQL)

Do
  ' Tilføj modtager
Mailer.AddRecipient rs("name"), rs("email")
  rs.MoveNext
Loop While Not rs.EOF

Mailer.ContentType = "text/html"
Mailer.Subject = Request.Form("Subject")
Mailer.BodyText = Request.Form("MsgBody")

' Send e-mail og skriv status
if Mailer.SendMail then
  Response.Write "Mailen er afsendt..."
else
  Response.Write "Der skete en fejl: " & Mailer.Response
end if

' Fjern objekt igen
Set Mailer = Nothing

else %>

<HTML>
<HEAD>
<TITLE>Afsend mail</TITLE>
</HEAD>
<BODY>
<FORM ACTION="" NAME="Send mail">
Emne: <input type="text" name="Subject" size="60" align="right"><br>
HTML kode: <textarea wrap="off" name="MsgBody"></textarea>
<br>
<input type="submit" value="Send mail">
</FORM>
</BODY>
</HTML>

<% end if %>

hvis du ligger alt det her i samme fil
Avatar billede degnens Mester
29. oktober 2003 - 16:05 #9
Hmmm, nu har jeg lagt det i samme fil, men får det ikke til at virke overhovedet - uanset html-indhold. Jeg opdagede at er ikke var noget filnavn i den nederst form action. Men det virker hverken med eller uden. Jeg har forsøgt at lægge den ud som afsend.asp og så taste både i den gamle "send mail.htm" side og direkte i "afsend.asp" side. Men der sker ingenting overhovedet. Når jeg trykker på send står der Udført nederst i Explorer-poceslinien, felterne bliver tomme, men der bliver intet sendt?

Tror du løsningen ligger i PGPMail? Det kender jeg slet ikke noget til.
Avatar billede degnens Mester
29. oktober 2003 - 16:27 #10
Kan der ske at være noget galt med din første "if" sætning. I min WebWriters kodefarvning ser det ud som om den første sætning: "if request.form("subject")<" forstyrrer resten i kodningen i filen. Når jeg sletter if-sætningen øverst får jeg de oprindelige kodefarver tilbage, og kan sende mails - men de er blanke i både subject og body.
Avatar billede kovalt Nybegynder
29. oktober 2003 - 16:32 #11
der skal ikke stå noget i den nederste når det ligger på samme side.... så submitter den baer sig selv.... og den øverset if-sætning afgør jo hvilket script der eksekveres....

jeg smutter men kigger lige forbi i aften.... så skal jeg nok lige finde ud af noget
Avatar billede degnens Mester
29. oktober 2003 - 16:35 #12
jeg eksperimenterede lidt videre - det ser ud som om det er <> i if-sætningen, der ikke bliver forstået korrekt. Kan det skrives anderledes? f.eks. som Is Not eller lign? Sådan gør jeg i Access, men det er jo ikke lige det samme.... Som du forstår er jeg helt ny i asp. Jeg begyndte først at eksperimentere med det for en lille uge siden.
Avatar billede degnens Mester
29. oktober 2003 - 16:48 #13
det virker som om den når at slette det igen som jeg taster ind, inden den sender noget, felterne bliver blanke og det er de sendte mails også. Desuden begynder den altid med at sende en tom mail, når jeg går ind på siden for at taste - så jeg kommer måske ikke uden om at skulle benytte 2 sider?
Avatar billede degnens Mester
26. januar 2004 - 21:47 #14
Dette spørgsmål gik helt død, så nu lukker jeg det. Fandt aldrig en løsning.
Avatar billede degnens Mester
09. september 2004 - 14:25 #15
Jeg tog udfordringen op igen i denne uge - og nu virker det!! Løsningen er som oprindeligt tænkt med en side, hvor jeg indtaster Subject og MsgBody i hver sit felt og så trykker jeg på send. Det var ganske rigtigt Request.Form, der skulle bruges. Problemerne var desuden et par mindre trykfejl (som jeg ikke præcist husker mere) og så en kæmpebrøler ved at jeg glemte 'Methode=POST' i afsendelsesformularen. De to koder i de to filer ser således ud:


Filen 'Send.htm':
<HTML>
<HEAD>
<TITLE>Afsend mail</TITLE>
<meta name="Generator" content="Stone's WebWriter 4">
</HEAD>
<BODY>
<FORM action="afsend.asp" method=POST>
Emne: <input type="text" name="Subject" size="60" align="right"><br>
HTML kode: <textarea cols="120" rows="25" wrap="off" name="MsgBody"></textarea>
<br>
<input type="submit" value="Send mail">
</FORM>
</BODY>
</HTML>

Filen 'afsend.asp':

<HTML>
<HEAD>
<TITLE>Afsend mail</TITLE>
<meta name="Generator" content="Stone's WebWriter 4">
</HEAD>
<BODY>
<%
Dim Mailer
Set Mailer = Server.CreateObject("SMTPsvg.Mailer")
Mailer.FromName  = "Navn på afsender"
Mailer.FromAddress= "afsender@domain.dk"
Mailer.RemoteHost = "mail.domain.dk"

Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; " & "DBQ=" & server.mappath("databasenavn.mdb")
Conn.Open DSN


strSQL = "Select * from grunddata"
Set rs = Conn.Execute(strSQL)

Do
  ' Tilføj modtager
Mailer.AddBCC rs("name"), rs("email")
  rs.MoveNext
Loop While Not rs.EOF

Mailer.ContentType = "text/html"
Mailer.Subject = Request.Form ("Subject")
Mailer.BodyText = Request.Form ("MsgBody")


' Send e-mail og skriv status
if Mailer.SendMail then
  Response.Write "Mailen er afsendt..."
else
  Response.Write "Der skete en fejl: " & Mailer.Response
end if

' Fjern objekt igen
Set Mailer = Nothing
%>

</BODY>
</HTML>

Håber nogen kan have glæde af det.
Vh
Lars
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