Avatar billede steen_hansen Forsker
25. juni 2015 - 18:12 Der er 17 kommentarer og
1 løsning

Hvordan sender jeg 2 eller flere forskellige HTML-mails v.hj.a. JMail?

Jeg har kreeret 2 forskeligge HTML-mails på samme side. Brugeren udfylder formularfelter. Values fanges, den første HTML-mail smutter fint afsted, ingen problemer

<!-- #include virtual="/users/userdata.asp" -->

<html>

<%

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

        Dim dima, dimb, JMail
        dima = Request.Form("dim1")
        dimb = Request.Form("dim2)

        Set JMail = Server.CreateObject("JMail.Message")
        JMail.AddRecipient "" & vUsermail "", "vUsername"
        JMail.From = "noreply@mitdomæne.dk"
        JMail.Subject = "Sagsnummer: " & no & ""
        JMail.appendHTML "<html><body>"
        JMail.appendHTML "</body></html>"

        JMail.Send("mailout1.surf-town.net")
        Set JMail = Nothing

        Response.Redirect "/"

    End If

%>

<body>
<form method="post" action=/default.asp">
    <input type="hidden" name="mode" value="sendmail">
    <input type="text" name="dima">
    <input type="text" name="dimb">
</form>

</body>
</html>

Det virker fint, ingen problemer. Men hensigten er, at én mail med samtlige oplysninger og specifikationer skal sendes til afdelingen. En anden mail skal sendes til kunden med en kort bekræftelse på, at opgaven er udført. Og så får jeg et problem. Jeg tilføjer values til formularen, som skal bruges i mailen til kunden. Til det skal jeg jo bruge en ny JMail, med kundens e-mailadresse (JMail.AddRecipient). Så jeg regner med, at "Set JMail = Nothing" vil afslutte det ene script, så det næste kan gennemføres. Bemærk jeg flytter Response.Redirect ned til det nye script, så der ikke bliver redirected, før begge scripts er kørt:



<!-- #include virtual="/users/userdata.asp" -->

<html>

<%

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

        Dim dima, dimb, JMail
        dima = Request.Form("dim1")
        dimb = Request.Form("dim2)

        Set JMail = Server.CreateObject("JMail.Message")
        JMail.AddRecipient "" & vUsermail & "", "" & vUsername & ""
        JMail.From = "noreply@mitdomæne.dk"
        JMail.Subject = "Sagsnummer: " & no & ""
        JMail.appendHTML "<html><body>dima & dimb"
        JMail.appendHTML "</body></html>"

        JMail.Send("mailout1.surf-town.net")
        Set JMail = Nothing

        Dim JMail

        Set JMail = Server.CreateObject("JMail.Message")
        JMail.AddRecipient "" & vUsermail & "", "vUsername"
        JMail.From = "noreply@mitdomæne.dk"
        JMail.Subject = "Sagsnummer: " & no & ""
        JMail.appendHTML "<html><body>Kundeinfo1 & Kundeinfo2"
        JMail.appendHTML "</body></html>"

        Response.Redirect "/"

        JMail.Send("mailout1.surf-town.net")
        Set JMail = Nothing

    End If

%>

<body>

<form name="frmName" method="post" action=/enellerandenside.asp">
    <input type="hidden" name="mode" value="sendmail">
    <input type="text" name="dima">
    <input type="text" name="dimb">
</form>

</body>

</html>

Jeg ved ikke hvad der skal til, for at kunne sende begge mails. Det kunne være lækkert, og det er det store ønske, at brugerne ikke bliver redirected alle mulige steder hen. Det skal gerne kunne laves, så de indtaster det de nu skal på siden, og sender mailen afsted.

"Set JMail = Nothing" er åbenbart ikke det, der skal til for at kunne stoppe det ene, så det andet kan lade sig gøre. Håber MEGET på svar.
Avatar billede keysersoze Guru
25. juni 2015 - 18:19 #1
Hvis du redirecter før du sender og sætter til nothing sker der ingenting - redirect skal altid ske efter din kode er udført. Du behøver heller ikke at dimensionere (Dim) JMail igen for det er jo allerede sket en gang tidligere.

Faktisk kan du genbruge det allerede oprettede JMail-objekt efter første mail er sendt - du skal bare fjerne modtagere fra første mail - http://www.dimac.net/products/w3jmail/version43/reference/Message.htm#ClearRecipients - og erstatte indholdet før du sender.
Avatar billede claes57 Ekspert
25. juni 2015 - 18:20 #2
første halvdel er ok - men i den anden bruger du bare et nyt navn i stedet for jmail, fx
Set post2 = Server.CreateObject("JMail.Message")
post2.AddRecipient "" & vUsermail & "", "vUsername"
post2.From = "noreply@mitdomæne.dk"
post2.Subject = "Sagsnummer: " & no & ""
post2.appendHTML "<html><body>Kundeinfo1 & Kundeinfo2"
post2.appendHTML "</body></html>"

Response.Redirect "/"
post2.Send("mailout1.surf-town.net")

og så sæt post2 og jmail til nothing til sidst.
Avatar billede steen_hansen Forsker
25. juni 2015 - 18:46 #3
keyseroze, sorry. Jeg havde placeret den forkert i mit eksempel :p

Som regel giver det en fejl, hvis man dimensionerer 2 gange. Men jeg var i tvivl om Set JMail = Nothing nulstillede alt. Jeg forsøgte mig lidt frem.

http://www.dimac.net/products/w3jmail/version43/reference/Message.htm#ClearRecipients - kan jeg lokke dig til at poste det her, hvordan det skal gøres?

claes57, jeg havde ellers prøvet med JMailCustomer, men fik det ikke til at spille. Jeg forsøger mig lige igen.
Avatar billede steen_hansen Forsker
25. juni 2015 - 19:29 #4
Jeg har lavet dette. Men jeg er ikke sikker på hvordan ClearRecipients skal stå

        Set JMail = Server.CreateObject("JMail.Message")
        JMail.AddRecipient "" & afdelingsmail & ", "Vores afdeling"
        JMail.From = "noreply@mitdomæne.dk"
        JMail.Subject = "Et eller andet emne til afdelingen"
        JMail.appendHTML "<html><body><table><tr><td>En masse info til afdelingen</td></tr></table></body></html>"
        JMail.Send("mailout1.surf-town.net")



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

        JMailCustomer.Message.ClearRecipients

        JMailCustomer.AddRecipient "" & kundemail & ", "Kunde Egon Jensen"
        JMailCustomer.From = "noreply@mitdomæne.dk"
        JMailCustomer.Subject = "Et eller andet emne til kunden"

        JMailCustomer.HTMLBody = "<html><body><table><tr><td>Besked til kunde</td></tr></table></body></html>"
        JMailCustomer.Send("mailout1.surf-town.net")

        Set JMail = Nothing
        Set JMailCustomer = Nothing

        Response.Redirect "/"
Avatar billede claes57 Ekspert
25. juni 2015 - 19:55 #5
ClearRecipients Er ligegyldig når det er på 2 definitioner/navne.
Avatar billede steen_hansen Forsker
25. juni 2015 - 20:01 #6
Men det virker ikke. Det fejler ikke, men mailen til kunden bliver ikke sendt.
Avatar billede steen_hansen Forsker
25. juni 2015 - 20:03 #7
Og jeg ved ikke, om dette er rigtigt

JMailCustomer.Message.ClearRecipients
Avatar billede steen_hansen Forsker
25. juni 2015 - 20:48 #8
claes57, jeg har prøvet dit forslag.Den første mail til afdelingen smutter fint igennem. Den anden stilet til kunden, kommer ikke op. Nogen forslag? keysersoze? Jeg håber meget at få det op at køre i aften.
Avatar billede steen_hansen Forsker
25. juni 2015 - 22:38 #9
Det virkede pludselig af en eller anden årsag. Læg et svar begge 2 :)
Avatar billede steen_hansen Forsker
26. juni 2015 - 07:30 #10
Og nu til morgen virker det ikke igen.
Avatar billede keysersoze Guru
26. juni 2015 - 09:56 #11
Prøv

Set JMail = Server.CreateObject("JMail.Message")
JMail.AddRecipient "" & afdelingsmail & ", "Vores afdeling"
JMail.From = "noreply@mitdomæne.dk"
JMail.Subject = "Et eller andet emne til afdelingen"
JMail.HTMLBody "<html><body><table><tr><td>En masse info til afdelingen</td></tr></table></body></html>"
JMail.Send("mailout1.surf-town.net")

JMail.ClearRecipients()

JMail.AddRecipient "" & kundemail & ", "Kunde Egon Jensen"
JMail.Subject = "Et eller andet emne til kunden"
JMail.HTMLBody = "<html><body><table><tr><td>Besked til kunde</td></tr></table></body></html>"
JMail.Send("mailout1.surf-town.net")

Set JMail = Nothing

Response.Redirect "/"
Avatar billede steen_hansen Forsker
26. juni 2015 - 20:04 #12
Det viste sig, at ikke alt var, som det burde have været på webhotellet. Men jeg prøve dette her, og det virker fint, både JMail og JMailCustomer:

        Dim faktext, JMailCustomer
        faktext = Request.Form(SQLEncode("faktext"))

        Set JMailCustomer = Server.CreateObject("JMail.Message")
        JMailCustomer.AddRecipient "" & foemail & "", "" & fouser & ""
        JMailCustomer.From = "noreply@mitdomæne.dk"
        JMailCustomer.Subject = "#" & externalno & ""

        JMailCustomer.HTMLBody = "<html><body>"
        JMailCustomer.appendHTML "En masse info til kunden"
        JMailCustomer.appendHTML "" & FormatText(faktext) & "<br><br>"
        JMailCustomer.appendHTML "Vores sagsnummer " & vNo & " lukkes hermed i vores system."
        JMailCustomer.appendHTML "Med venlig hilsen"
        JMailCustomer.appendHTML "</body></html>"
        JMailCustomer.Send("mailout1.surf-town.net")

        Set JMail = Nothing
        Set JMailCustomer = Nothing

        Set JMail = Nothing

        Response.Redirect "/"

Keysersoze/claes57, lægger I begge et svar?
Avatar billede steen_hansen Forsker
26. juni 2015 - 20:06 #13
Forøvrigt, er nogen af Jer skrappe til timeberegning?

http://www.eksperten.dk/spm/1004491

hvis I har tid en fredag aften :)
Avatar billede claes57 Ekspert
26. juni 2015 - 20:20 #14
ligemeget med point til mig.
Avatar billede keysersoze Guru
26. juni 2015 - 21:27 #15
Det vil alt andet lige være mere ressourcekrævende, både for din kode isoleret set og for webhotellet, at oprette to instanser af jmail når kun én er nødvendig. Men hvis bare det at det virker er hovedsagen går det vel.
Avatar billede steen_hansen Forsker
26. juni 2015 - 23:01 #16
Så mange tak for hjælpen da, claes57

keysersoze, der skal jo sendes til to forskellige modtagere, med forskelligt indhold til begge. Jeg kan ikke se, at det skulle kunne lade sig gøre ....? Lægger du et svar?
Avatar billede keysersoze Guru
27. juni 2015 - 11:55 #17
Det er det jeg skriver i #1 - dan og send første mail, clear modtagere, sæt nyt indhold og send næste mail.
Avatar billede steen_hansen Forsker
27. juni 2015 - 23:15 #18
Ok. Jeg vil forsøge mig senere. Tak for hjælpen, begge to :)
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

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