Avatar billede joeblack Nybegynder
03. januar 2006 - 21:45 Der er 16 kommentarer og
1 løsning

Formateret mail

Hej alle

Jeg bruger Jmail og er som sådan fint tilfreds med det.

Nu vil jeg imidlertid gerne sende nogle formatterede mail, altså i HTML.

Jeg har indtil videre opbygget en laaang varibel til Jmail.body, men er det virkelig løsningen ? Eller findes der en smartere merode ?
Avatar billede nielle Nybegynder
03. januar 2006 - 22:14 #1
Du skal vist gemme i:

JMail.HTMLBody

- for HTML-kode.

Men bortset fra det, lyder det ikke som om at der er noget galt med din fremgangsmåde...
Avatar billede jansangill Nybegynder
04. januar 2006 - 00:18 #2
'ja du kan jo opbygge det som en variabel....måske sådan her

body = "" &vbCRLF
body = body & "<html>" &vbCRLF
body = body & "<title>Mail using J-Mail</title>" &vbCRLF
body = body & "<meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'><style type='text/css'>" &vbCRLF
body = body & "</body>" &vbCRLF
body = body & "</html>" &vbCRLF



' Send  mail
set msg = server.CreateObject("JMail.Message")
msg.Logging = true
msg.Silent = true
msg.Charset = "iso-8859-1"

msg.From = "xx"
msg.FromName = "xx"
msg.AddRecipient "xx"
msg.Subject = "xx"
msg.HTMLbody = body
msg.Send(xx")
set msg = nothing

'eller bare sådan her skulle man da tro ihvertfald

set msg = Server.CreateOBject( "JMail.Message" )

msg.Logging = true
msg.silent = true
msg.From = "xx"
msg.FromName = "xx"
msg.AddRecipient xx
msg.Subject = "xx"
msg.HTMLBody = "<html><head><title>xxxxx</title></head><body>xxxxxxxxx</body></html>"
msg.Send("xx")
set msg = nothing


kommer vel an på smag og behag
Avatar billede joeblack Nybegynder
04. januar 2006 - 18:31 #3
Så I siger altså, at der ikke er andre måder at gøre det på end jeg hidtil har gjort ?

Det er bare hamrende besværligt og svært at ændre i variablen/html-koden....
Avatar billede nielle Nybegynder
04. januar 2006 - 19:10 #4
Besværligt på hvilken måde?
Avatar billede joeblack Nybegynder
04. januar 2006 - 19:37 #5
Når jeg har en mail med tabeller, billeder og en masse andet formattering, så bliver variablen temmelig lang og uoverskuelig at rette i.

Som jansangill'e eksempel:

body = "" &vbCRLF
body = body & "<html>" &vbCRLF
body = body & "<title>Mail using J-Mail</title>" &vbCRLF
body = body & "<meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'><style type='text/css'>" &vbCRLF
body = body & "</body>" &vbCRLF
body = body & "</html>" &vbCRLF

-og han har ikke engang noget indhold....
Avatar billede nielle Nybegynder
04. januar 2006 - 19:44 #6
Nope, det er der ingen vej uden om. Hvis man vil lave HTML-formateret mail så ender man med at skulle skrive en masse HTML-kode. ;^)

Du kan dog droppe alle dine vbCrLf-koder med det samme - de har ingen effekt i en HTML-formateret mail.

En mulighed er at have al HTML-koden liggende i en tekstfil som du så indlæser (altså en template). I denne kan du have nogle placeholdere de steder hvor du skal have indsat noget tekst. Derefter kan du bruge Replace til at erstatte placeholderene med de værdier der skal bruges i det aktuelle tilfælde. Du slipper imidlertid ikke for at skulle skrive HTML-koden med denne model.
Avatar billede joeblack Nybegynder
04. januar 2006 - 19:54 #7
Jeg er med på, at html-koden skal skrives. Det besværlige er blot, at opdelen koden bagefter og putte den ind i en variabel (body = body & ...)

Kan jeg undgå det med din idé om en template ?
Avatar billede nielle Nybegynder
04. januar 2006 - 20:15 #8
Sådan læser du fra en tekst-fil med ASP (specielt Eksempel 2):

http://www.html.dk/tutorials/asp/lektion15.asp

I stedet for at udkrive linjerne med det samme, som i eksemplet, gemmer du dem i en variabel:

Content = "";
Do While not f.AtEndOfStream
    Content = Content & f.ReadLine
Loop

Hvis din template indeholder placeholder a la dette:

<html>
<head>
<title>[TITLE]</title>
</head>
<body>
...
</body>
</html>

- så kan du efterfølgende indsætte en vilkårlit titel med Replace:

Titel = "Eksperten"
Content = Replace(Content, "[TITLE]", Titel)

Til sidst assignes den endelige værdi af Content til din Body:

JMail.HTMLBody = Content
Avatar billede joeblack Nybegynder
04. januar 2006 - 20:20 #9
Jeg er lidt lost...

Gemmer jeg min mail i en html-fil på sitet ? og henter den ind i variablen content ?
Avatar billede nielle Nybegynder
04. januar 2006 - 20:24 #10
Du gemmer din template for hvordan en mail skal se ud på dit site. Så læser du indholdet af den derfra, laver et passende anta Replace()'s alt efter hvad der er brugertilpasset, og så assigner du resultatet til din HTMLBody til sidst.

Fordelen ved dette er at du nemt kan ændre templaten uden at skulle spekulere på hvordan det skal omkodes i ASP-filen.
Avatar billede joeblack Nybegynder
04. januar 2006 - 20:28 #11
OK, så gemmer jeg min mail i en html-fil på sitet.

Kan jeg bruge asp-kode i den fil (a la <% =MinVariabel %> i stedet for placeholders ?

Hvorden assigner jeg præcist html-koden til en variabel (f.eks. "content") ?
Avatar billede nielle Nybegynder
04. januar 2006 - 20:32 #12
<%
Dim fso, f, filespec
Set fso = CreateObject("Scripting.FileSystemObject")
filespec = Server.Mappath("dinMailTemplate.htm")
Set f = fso.OpenTextFile(filespec, 1)

' Læs linie for linie indtil slutningen af filen
Content = ""
Do While not f.AtEndOfStream
    Content = Content & f.ReadLine
Loop

f.Close
%>
Avatar billede nielle Nybegynder
04. januar 2006 - 20:37 #13
> Kan jeg bruge asp-kode i den fil (a la <% =MinVariabel %> i stedet for placeholders ?

Nej.
Avatar billede joeblack Nybegynder
06. januar 2006 - 19:33 #14
nielle -> Tak for indsatsen.

Drop lig et svar...
Avatar billede nielle Nybegynder
06. januar 2006 - 22:53 #15
Oki :^)
Avatar billede joeblack Nybegynder
08. januar 2006 - 12:37 #16
Takker for hjælpen...
Avatar billede nielle Nybegynder
08. januar 2006 - 18:03 #17
Du skal også lige acceptere svaret :^)
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