Avatar billede torbenmelander Nybegynder
05. april 2004 - 20:48 Der er 14 kommentarer og
1 løsning

Email (Async)

På en side hvor en bruger kan, få tilsendt noget software (som vedhæftet fil i mail), ved at udfylde nogle oplysninger, har jeg problemer med at brugeren skal vente nogle sekunder (30+) før han kan komme videre ...

Har I kendskab til nogle komponenter der tilbyder at sende mails i baggrunden, og som understøtter vedhæftning af filer fra en stream fra en database ?

Jeg har kigget lidt på devMail.NET, men venter stadig på at deres support finder ud af hvordan man vedhæfter filer fra en database.

Måske findes der også noget billgere ???
Avatar billede lauge Nybegynder
05. april 2004 - 22:29 #1
du kan lave det hele i .NET frameworket.
Lad brugeren udfylde det som han skal. Lave så et scheduleret job på serveren, som f.eks. hvert 5. min, ser efter om det skal udsendes nogle mails.
På denne måde opdager brugeren ikke nogen ventetid.

Og du kan selvfølgelig også vedhæfte dokumenter til de mails du sender.
Avatar billede guidmaster Nybegynder
06. april 2004 - 05:24 #2
Alternativt kan du jo selv starte en process op i en anden tråd som så står for at afsende en mail. På den måde vil dine ikke skulle vente på at mailen bliver afsendt.
Avatar billede torbenmelander Nybegynder
06. april 2004 - 08:06 #3
lauge >> Jeg har ikke mulighed for at lave et scheduleret job på serveren...

guidmaster >> Nogle eksempler ??? Vil du så ha' at jeg bruge den indbyggede klasse i .NET til at sende mails ? Og hvordan er mulighederne for at vedhæfte filer med denne klasse fra f.eks. en database ?

Jeg afsætter gerne flere point hvis jeg har undervuderet spørgsmålet ... sig bare til ...
Avatar billede guidmaster Nybegynder
06. april 2004 - 09:17 #4
Jeg har et eksempel på det, men da jeg pt sidder i seattle har jeg desværre ikke adgang til koden da den ligger hjemme i danmark :(
Hvis du er interesseret kan du poste en kommentar når jeg er kommet hjem (er tilbage i dk igen 12/4)
Ellers kan du tage et kig på Thread Pool klassen - http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemthreadingthreadpoolclasstopic.asp
Avatar billede guidmaster Nybegynder
06. april 2004 - 09:18 #5
Og ja, jeg vil bare bruge den indbyggede mail klasse. Et eksemple på en vedhæftning af fil: http://www.dotnetforum.dk/forum/ShowPost.aspx?PostID=30
Avatar billede torbenmelander Nybegynder
06. april 2004 - 09:29 #6
guidmaster >> Jeg vil kigge nærmere på dit link om Thread Pool klassen.

Jeg vil gerne se eksemplet, men jeg kan desværre nok ikke vente med en løsning til d. 12/4 da jeg mangler en løsning her og nu ...

Jeg vil gerne undgå at gemme filen fra DATABASEN først. Kan man vedhæfte direkte (stream) med .NET's egen klasse ???
Avatar billede burningice Nybegynder
12. april 2004 - 16:05 #7
nej, du kan ikke oprette en MailAttachment ud fra en stream, desværre.. det skal være fra en fysisk fil på harddisken :(

Ang. at sende dine mails, så opret en tråd som udfører din metode:

Thread thr = new Thread(new ThreadStart(SendMails));
trh.Start();

private void SendMails() {
  //Send alle dine mails
}
Avatar billede lauge Nybegynder
13. april 2004 - 07:54 #8
nu har jeg ikke helt fattet det her med tråde - så jeg spørger lige en gang.

Hvis jeg nu har et debat forum, hvor der skal sendes en mail til 200 brugere ved hvert svar/indlæg. Idag bruger jeg en schedulering på serveren. Men er det "blot" at skrive den lille stump kode, som cyperfessor skriver, for at lave en ny tread?

Og virker det så således, at mine brugere ikke skal vente på at alle mails er sendt, men blot kan lukke browseren straks efter?

For det er jo lagt nemmere end at skulle sætte scheduleringer op hver gang.
Avatar billede burningice Nybegynder
13. april 2004 - 08:04 #9
ja... det er så nemt... :) tråde i .Net er _VIRKELIG_ nemt... som du kan se ud fra den stump kode jeg lige har postet :)

dog skal du sørge for at have try-catch omkring al din kode og sørge for evt. at skrive til error.log-filer for at fejl ikke skal ødelægge det hele.
Avatar billede lauge Nybegynder
13. april 2004 - 08:07 #10
men er der så ikke nogen max for antal tråde på serveren, og hvor lang tid de kan kører?
Men ellers er det jo for fedt.
Avatar billede burningice Nybegynder
13. april 2004 - 08:26 #11
Har prøvet at søge lidt på nettet om det, og nej... ser ikke ud til at der er nogle begrænsninger. Eneste jeg har kunne finde man skal huske, er at Priority åbenbart skal være sat til Low
Avatar billede torbenmelander Nybegynder
13. april 2004 - 08:33 #12
guidmaster >> Jeg vil stadig gerne se dit ekspempel...

cyberfessor >> Tak for koden, men jeg kan ikke bruge det til noget hvis jeg ikke kan vedhæfte filer fra en database, så bliver jeg nok nødt til at kigge nærmere på devMail.NET eller lignende ... Nogen der har erfaring med nogle komponenter ?
Avatar billede lauge Nybegynder
13. april 2004 - 08:36 #13
ok cool.
Det får mig til at tænke på om jeg også på en eller anden måde kan droppe scheduleringen på mine nyhedsbreve.

Det er således, at jeg har en schedule som køre 1 gang hver dag evt. kl 11.00, den udsender så alle de nyheder der er skrevet de sidste 24 timer. Men kan man også gøre det i en tråd, således at hvis jeg skriver en nyhed nu, så bliver den først udsendt kl. 11.00 gennem en tråd.?

Det går selvfølgelig galt hvis serveren nu bliver genstartet.
Avatar billede burningice Nybegynder
13. april 2004 - 08:45 #14
måske... nu har jeg ikke undersøgt det super-meget, og har ikke selv haft brug for at bruge det (endnu), men jeg kunne forestille mig at en session lavet under eksekvering af en side kun eksisterer så længe at den session den blev lavet i gør. Dvs. at når session'en timer ud nedlægges tråden. Det er dog kun en teori, det kan også være at session'en aldrig udløber så længe at tråden kører.

Under alle omstændigheder, så vil jeg mene at det er bedre at oprette sådan en tråd, der altid skal køre under Application_Start-eventen i global.asax.
Avatar billede torbenmelander Nybegynder
04. september 2004 - 11:45 #15
Nå, købte devMail.NET ...
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