Avatar billede webnoob Nybegynder
10. oktober 2005 - 21:49 Der er 32 kommentarer og
1 løsning

Jmail i ren tekst

Jeg kan ikke lige gennemskue hvordan jeg skal få mailen til at se ud som jeg ønsker.

Mailen er i ren tekst:

Set BrevBody              = Server.CreateObject("JMail.SMTPMail")
    BrevBody.ServerAddress = "smtp.mail.dk"
    BrevBody.Sender        = "millet-design@mail.dk"
    BrevBody.AddRecipient    Request.Form("order_form_email")
    BrevBody.Subject      = "Orderbekræftelse"
    BrevBody.Priority      = 3

    MailIndhold = "Tak for bestilling fra min e-butik" & vbCrLf & vbCrLf
    MailIndhold= MailIndhold & "Jeg sender nu en ordrebekræftelse, svarer ordren i emailen ikke til det du har bestilt, så kontakt mig hurtigst muligt, via emailen i bunden." & vbCrLf & vbCrLf   
    MailIndhold= MailIndhold & "" & vbCrLf & vbCrLf 
    MailIndhold= MailIndhold & "Ordren indhold :" & vbCrLf & vbCrLf
    MailIndhold= MailIndhold & "Antal      Vare Nummer                Vare navn                Pris/Stk.          Beløb" & vbCrLf & vbCrLf
    MailIndhold= MailIndhold & "--------------------------------------------------------------------------------------------------" & vbCrLf & vbCrLf

varetotalen=0
sql="select * from varekurv where sessionsid='"&session.sessionid&"'"
set record2=rs.execute(sql)
do while not record2.eof
sql="select * from vare where vareid='"&record2("vareid")&"'"
set record=rs.execute(sql)
x=1
varetotal=record2("antal")*record("varepris")
varetotalen=varetotalen+varetotal

    MailIndhold= MailIndhold & record2("antal")
    MailIndhold= MailIndhold & record("varenummer")
    MailIndhold= MailIndhold & record("varenavn")
    MailIndhold= MailIndhold & formatnumber(record("varepris"),2)
    MailIndhold= MailIndhold & formatnumber(varetotal,2)&vbcrlf
record2.movenext
loop

    MailIndhold= MailIndhold & "" &vbcrlf

    MailIndhold= MailIndhold & "I alt ekskl. fragt & moms"
    MailIndhold= MailIndhold & formatnumber(varetotal,2)&vbcrlf

    MailIndhold= MailIndhold & "Fragt"
    MailIndhold= MailIndhold & "20,00"&vbcrlf

    MailIndhold= MailIndhold & "I alt inkl. fragt"
    MailIndhold= MailIndhold & formatnumber(varetotalen+20,2)&vbcrlf

    MailIndhold= MailIndhold & "Moms (25%)"
    MailIndhold= MailIndhold & formatnumber((varetotalen+20)*0.00,2)&vbcrlf

    MailIndhold= MailIndhold & "I alt inkl. moms"
    MailIndhold= MailIndhold & formatnumber((varetotalen+20)*1.00,2)&vbcrlf

BrevBody.Body = MailIndhold
BrevBody.Execute

Set BrevBody= Nothing

Mailen ser så sådan her ud:

Tak for bestilling fra min e-butik

Jeg sender nu en ordrebekræftelse, svarer ordren i emailen ikke til det du har bestilt, så kontakt mig hurtigst muligt, via emailen i bunden.



Ordren indhold :

Antal      Vare Nummer                Vare navn                Pris/Stk.          Beløb

--------------------------------------------------------------------------------------------------

1012-105Gul sok19,9519,95

I alt ekskl. fragt & moms19,95
Fragt20,00
I alt inkl. fragt39,95
Moms (25%)0,00
I alt inkl. moms39,95


Men det er meningen at antal står under Antal og varenummer under Varenummer osv.

Kom så eksperter, vis hvad I dur til.
Avatar billede softspot Forsker
10. oktober 2005 - 21:55 #1
Hvis dine kolonner er et bestemt antal tegn brede, så skal du vel bare foranstille hver værdi med antallet af tegn i kolonnen minus antallet af tegn som værdien optager...

Hvis f.eks. en kolonne er 20 tegn bred kan du bruge denne metode til at foranstille med mellemrum:

Right(String(" ", 20) & rs("antal"), 20)

hvilket burde tage de sidste 20 tegn i strengen (og dermed antal plus det antal foranstillede mellemrum der er behov for, for at fylde op til 20 tegn).
Avatar billede webnoob Nybegynder
10. oktober 2005 - 21:59 #2
MailIndhold= MailIndhold Right(String(" ", 20) & rs("antal"), 20)

Er det det du mener?
Avatar billede softspot Forsker
10. oktober 2005 - 22:02 #3
Næsten:

MailIndhold = MailIndhold & Right(String(" ", 20) & rs("antal"), 20)

men ellers ja
Avatar billede webnoob Nybegynder
10. oktober 2005 - 22:06 #4
Narj den holder ikke helt:

Microsoft VBScript runtime error '800a000d'

Type mismatch: '[string: " "]'

/send_order.asp, line 30
Avatar billede softspot Forsker
10. oktober 2005 - 22:09 #5
Nu har du vel ændret navnet på din recordset variabel...?

Du kalder den record i din kode, men dit eksempel benyttede rs

MailIndhold = MailIndhold & Right(String(" ", 20) & rs("antal"), 20)

Så skal det jo være:

MailIndhold = MailIndhold & Right(String(" ", 20) & record("antal"), 20)
Avatar billede webnoob Nybegynder
10. oktober 2005 - 22:10 #6
ja det har jeg.
Avatar billede softspot Forsker
10. oktober 2005 - 22:14 #7
OK, my bad!

MailIndhold = MailIndhold & Right(String(20, " ") & record("antal"), 20)

antallet af tegn som String genererer skal stå først...
Avatar billede webnoob Nybegynder
10. oktober 2005 - 22:15 #8
det kommer der denne her fejl ud af:

ADODB.Recordset error '800a0cc1'

Item cannot be found in the collection corresponding to the requested name or ordinal.

/send_order.asp, line 30
Avatar billede softspot Forsker
10. oktober 2005 - 22:17 #9
Hvad står der i linie 30 (du kan ligeså godt vænne dig til at vise de kodelinier hvor fejlen opstår, så er det meget hurtigere at gennemskue hvad der kan være galt ;))?
Avatar billede webnoob Nybegynder
10. oktober 2005 - 22:18 #10
MailIndhold= MailIndhold & Right(String(20, " ") & record("antal"), 20)

ja selvfølgelig, sorry
Avatar billede softspot Forsker
10. oktober 2005 - 22:21 #11
hedder den recordset-variabel hvor antal ligger ikke record2...?
Avatar billede webnoob Nybegynder
10. oktober 2005 - 22:22 #12
jo selvfølgelig, jeg har vist rodet for længe med det her ......... hehe
Avatar billede softspot Forsker
10. oktober 2005 - 22:23 #13
Kører det så nu?
Avatar billede webnoob Nybegynder
10. oktober 2005 - 22:27 #14
ja, på den første linje, men kan du lige blive hængende så jeg kan test på de andre linje også?
Avatar billede softspot Forsker
10. oktober 2005 - 22:30 #15
Ja, var bare nysgerrig for om der var flere kørselsfejl :)
Avatar billede webnoob Nybegynder
10. oktober 2005 - 22:32 #16
det er der skam ikke. Det spiller på loopen, så det går jeg ud fra det også vil på resten.

Tak for hjælpen, lig et svar så du kan få dine point.
Avatar billede softspot Forsker
10. oktober 2005 - 22:37 #17
Velbekomme :)
Avatar billede softspot Forsker
10. oktober 2005 - 22:37 #18
Tak for point :)
Avatar billede webnoob Nybegynder
10. oktober 2005 - 22:39 #19
NP, de er MAX fortjent!! ;o)
Avatar billede softspot Forsker
10. oktober 2005 - 22:40 #20
Jeg er glad for at du er tilfreds :)
Avatar billede webnoob Nybegynder
16. oktober 2005 - 15:09 #21
det ser tilsyneladende ud til at det ikke ser ens ud i alle mail, er der en anden måde man kan rette teksten til ?
Avatar billede softspot Forsker
16. oktober 2005 - 15:20 #22
Det er svært at styre hvis der ikke benyttes monospace-karaktersæt i mailprogrammet. Så skal du enten over i en HTML-formateret mail, eller du kan måske benytte dig af tabs, dvs. du indsætter tabs mellem hvert felt. Jeg er dog ikke sikker på at tabs er helt så lette at styre...
Avatar billede webnoob Nybegynder
16. oktober 2005 - 15:39 #23
vil man ikke løbe ind i problemer hvis benytte html? det er jo ikke alle der kan modtage mails i html-format.
Avatar billede softspot Forsker
16. oktober 2005 - 15:45 #24
Jo, men mange mailkomponenter kan sende begge formater på samme tid og tekstversionen skal så kun være en fallback-løsning, hvis HTML ikke understøttes. Så er spørgsmålet hvomeget energi der skl bruges på layout i tekstformat...
Avatar billede webnoob Nybegynder
16. oktober 2005 - 15:47 #25
vil du hjælpe mig med at lave den løsning?
Avatar billede softspot Forsker
16. oktober 2005 - 16:08 #26
Jeg kan da starte med at henvise dig til flg. link: http://www.dimac.net/Products/w3JMail/Version43/Examples/HTMLemail.htm

Det skulle gerne give dig en idé om hvordan det kan gøres. I bund og grund er det et spørgsmål om at udarbejde 2 versioner af de data du skal sende og så lægge dem i hvert sit felt i mailen (HTMLBody og Body til HTML- hhv. tekst-udgaven af mailen).

Ydermere skal du benytte et andet objekt i JMail-komponenten, men prøv lige at kigge på eksemplet bag linket jeg gav dig ovenfor - det er ikke så svært... :)
Avatar billede webnoob Nybegynder
16. oktober 2005 - 19:33 #27
Jeg har ikke helt forstået hvordan jeg skal gøre, måske jeg kan få dig til at vise mig hvordan jeg laver denne mail om til html fra ren tekst og så bruge min som "reserve":

<!--#include file="forbindelse.asp" -->

<%
brugernavn=Request.Form("brugernavn")
email=Request.Form("email")

If brugernavn = "" AND email = "" Then
  Response.write "Du mangler at udfylde et af felterne!"
End If

If brugernavn <> "" Then

sql="select * FROM adresse WHERE (brugernavn= '" & brugernavn & "')"
set record=rs.execute(sql)

Set BrevBody              = Server.CreateObject("JMail.SMTPMail")
    BrevBody.ServerAddress = "smtp.mail.dk"
    BrevBody.Sender        = "admin.adresseliste@mail.dk"
    BrevBody.AddRecipient    record("email")
    BrevBody.Subject      = "Adgangskode"
    BrevBody.Priority      = 1

    MailIndhold= MailIndhold & "Din adgangskode er" & Right(String(5, " ") & record("adgangskode"),5) & vbCrLf & vbCrLf
    MailIndhold= MailIndhold & "Log ind og går til din profil og skift den, så du ikke glemmer den igen." & vbCrLf & vbCrLf
    MailIndhold= MailIndhold & "Med venlig hilsen" & vbCrLf & vbCrLf
    MailIndhold= MailIndhold & "Adresseliste administrator"

BrevBody.Body = MailIndhold

response.write("Din kode er blevet sendt til dig i en mail.")

end if

If email <> "" Then

sql="select * FROM adresse WHERE (email = '" & email & "')"
set record=rs.execute(sql)

Set BrevBody              = Server.CreateObject("JMail.SMTPMail")
    BrevBody.ServerAddress = "smtp.mail.dk"
    BrevBody.Sender        = "admin.adresseliste@mail.dk"
    BrevBody.AddRecipient    record("email")
    BrevBody.Subject      = "Brugernavn og adgangskode"
    BrevBody.Priority      = 1

    MailIndhold= MailIndhold & "Dit brugernavn er" & Right(String(7, " ") & record("brugernavn"),7) & vbCrLf
    MailIndhold= MailIndhold & "Din adgangskode er" & Right(String(5, " ") & record("adgangskode"),5) & vbCrLf & vbCrLf
    MailIndhold= MailIndhold & "Sæt et flueben i login, så bliver dit brugernavn gemt, log ind" & vbCrLf & vbCrLf
    MailIndhold= MailIndhold & "og gå til din profil og skift din kode så ud ikke glemmer den igen." & vbCrLf & vbCrLf
    MailIndhold= MailIndhold & "Med venlig hilsen" & vbCrLf & vbCrLf
    MailIndhold= MailIndhold & "Adresseliste administrator"

BrevBody.Body = MailIndhold

response.write("Dit brugernavn og din kode er blevet sendt til dig i en mail.")

end if

BrevBody.Execute

Set BrevBody= Nothing

%>

<!--#include file="forbindelseluk.asp" -->
Avatar billede softspot Forsker
16. oktober 2005 - 20:17 #28
OK, så starter jeg lige med at kopiere koden fra det link jeg gav dig... :)

Jeg tror faktisk bare jeg vil lave en funktion ud af den og så bruge den i begge tilfælde.

<%
function sendMail(emailAddr, emailName, subject, htmlMessage, textMessage)
  dim jmail

  Set jmail = Server.CreateObject("JMail.Message")

  jmail.AddRecipient emailAddr, emailName
  jmail.From = "admin.adresseliste@mail.dk"

  jmail.Subject = subject

  ' As only HTML formatted emails can contain inline images
  ' we use HTMLBody and appendHTML
  jmail.HTMLBody = htmlMessage

  ' But as not all mailreaders are capable of showing HTML emails
  ' we will also add a standard text body
  jmail.Body = textMessage

  jmail.Send( "smtp.mail.dk" )
end function
%>

Denne funktion kan du så kalde i de to forskellige scenarier (efter at du har sammensat din beskeder i hhv. tekst og HTML).

<%
brugernavn=Request.Form("brugernavn")
email=Request.Form("email")

If brugernavn = "" AND email = "" Then
  Response.write "Du mangler at udfylde et af felterne!"
End If

If brugernavn <> "" Then
  sql="select * FROM adresse WHERE (brugernavn= '" & brugernavn & "')"
  set record=rs.execute(sql)

  textMsg = textMsg & "Din adgangskode er" & Right(String(5, " ") & record("adgangskode"),5) & vbCrLf & vbCrLf
  textMsg = textMsg & "Log ind og går til din profil og skift den, så du ikke glemmer den igen." & vbCrLf & vbCrLf
  textMsg = textMsg & "Med venlig hilsen" & vbCrLf & vbCrLf
  textMsg = textMsg & "Adresseliste administrator"

  htmlMsg = htmlMsg & "<html><body>Din adgangskode er " & record("adgangskode") & "<br><br>"
  htmlMsg = htmlMsg & "Log ind og går til din profil og skift den, så du ikke glemmer den igen.<br><br>"
  htmlMsg = htmlMsg & "Med venlig hilsen<br><br>"
  htmlMsg = htmlMsg & "Adresseliste administrator</body></html>"

  sendMail record("email"), brugernavn, "Adgangskode", htmlMsg, textMsg

  response.write("Din kode er blevet sendt til dig i en mail.")

end if

If email <> "" Then
  sql="select * FROM adresse WHERE (email = '" & email & "')"
  set record=rs.execute(sql)

  textMsg = textMsg & "Dit brugernavn er" & Right(String(7, " ") & record("brugernavn"),7) & vbCrLf
  textMsg = textMsg & "Din adgangskode er" & Right(String(5, " ") & record("adgangskode"),5) & vbCrLf & vbCrLf
  textMsg = textMsg & "Sæt et flueben i login, så bliver dit brugernavn gemt, log ind" & vbCrLf & vbCrLf
  textMsg = textMsg & "og gå til din profil og skift din kode så ud ikke glemmer den igen." & vbCrLf & vbCrLf
  textMsg = textMsg & "Med venlig hilsen" & vbCrLf & vbCrLf
  textMsg = textMsg & "Adresseliste administrator"

  htmlMsg = htmlMsg & "<html><body>Dit brugernavn er " & record("brugernavn") & "<br>"
  htmlMsg = htmlMsg & "Din adgangskode er " & record("adgangskode") & "<br><br>"
  htmlMsg = htmlMsg & "Sæt et flueben i login, så bliver dit brugernavn gemt, log ind<br>"
  htmlMsg = htmlMsg & "og gå til din profil og skift din kode så ud ikke glemmer den igen.<br><br>"
  htmlMsg = htmlMsg & "Med venlig hilsen<br><br>"
  htmlMsg = htmlMsg & "Adresseliste administrator</body></html>"

  sendMail record("email"), record("email"), "Adgangskode", htmlMsg, textMsg

  response.write("Dit brugernavn og din kode er blevet sendt til dig i en mail.")
end if

%>
Avatar billede webnoob Nybegynder
16. oktober 2005 - 20:45 #29
er du en kæmpe haj til asp?
Avatar billede softspot Forsker
16. oktober 2005 - 21:28 #30
Hmmm... jeg er jyde, så det vil jeg helst ikke svare på... :)

Hvorfor?
Avatar billede webnoob Nybegynder
16. oktober 2005 - 21:30 #31
for så har jeg et par andre ting jeg gerne vil have lidt hjælp til og helst over msn. det vil ihvertfald være lettest.
Avatar billede softspot Forsker
16. oktober 2005 - 21:32 #32
send mig en mail jan at softspot.dk med din MSN adresse
Avatar billede webnoob Nybegynder
16. oktober 2005 - 21:36 #33
gjort
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