Toon posts:

[ASP/SMTP] Efficient veel(!) e-mails versturen

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ben een e-mailingsysteem aan het ontwikkelen van waaruit de gebruiker makkelijk een e-mailing kan verzenden naar alle leden in zijn mailinglijst.
Het systeem in gebaseerd op ASP/IIS/Windows SMTP-server en maakt tevens gebruik van het e-mail component (com) JMail.

Als ik het heb over een grote hoeveelheid e-mails kunnen dat er 1000 of 10.000 of 100.000 zijn. Veel meer dan 100.000 verwacht ik niet.

Er zijn in basis twee methoden om mails versturen middels JMail.
1. Je stuurt je mail naar smtp.server.nl
2. Je stuurt maakt een .eml file en dropt die in de pickup folder van de SMTP-server.

De 2de methode leek me beter omdat je dan de smtp-server op het windows2000 server systeem de verzending laat verzorgen en eigenlijk je je e-mails in een queue waarna de stmpserver deze mails verstuurd. (ook als het de eerste of tweede keer niet lukt omdat de doelserver niet bereikbaar is)

Alleen als je 50.000 e-mailberichten genereerd, kan dat nogal wat tijd kosten en performance vragen. Ga ervan uit dat iedere e-mail 15kB is dan heb je in totaal 732 MB aan e-mails in je Queue staan.

Weet iemand hier een betere method voor? Zat zelf te denken aan component wat op de server draait (com-object) en welke requests ontvangt van het e-mailingsysteem en deze requests achter elkaar doorvoert in batches van 1000 e-mails per keer.

Het voornaamste probleem wat ik heb is dat de server erg veel recources zal moeten gebruiken om zo'n mailing te versturen en dat andere processen (zoals bijv. WWW-service) hier last van kunnen hebben.
Wat zijn jullie ideen wat dat betreft?

  • Yoeri
  • Registratie: Maart 2003
  • Niet online

Yoeri

O+ Joyce O+

(overleden)
euh, kun je neit alle afzenders in bcc in één eml file zetten? wat niet resulteert in 732 MB in de queue?

Kijkje in de redactiekeuken van Tweakers.net
22 dec: Onze reputatie hooghouden
20 dec: Acht fouten


Verwijderd

Topicstarter
Het gaat alleen om gepersonaliseerde e-mails waarin bijv. ook de naam e.d. van de gebruiker in de tekst vernoemd staat. Briljant idee alleen gaat dat bij ons niet werken :)

  • Jaspertje
  • Registratie: September 2001
  • Laatst online: 12-08 16:04

Jaspertje

Max & Milo.. lief

Robbedoeske schreef op 22 September 2003 @ 14:26:
euh, kun je neit alle afzenders in bcc in één eml file zetten? wat niet resulteert in 732 MB in de queue?
Mijn idee :) Niet dus

En wat je ook nog zou kunnen doen is ipv al die adressen in 1 BCC zetten, bijvoorbeel d 10 dezelfde meeltjes te versturen met ieder 1000 BXX adressen (of hoeveel dan ook)

[ Voor 3% gewijzigd door Jaspertje op 22-09-2003 14:36 ]


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

Verwijderd schreef op 22 September 2003 @ 14:35:
Het gaat alleen om gepersonaliseerde e-mails waarin bijv. ook de naam e.d. van de gebruiker in de tekst vernoemd staat. Briljant idee alleen gaat dat bij ons niet werken :)
En door middel van taakplanner de boel 's nachts laten versturen?

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Hmmbob
  • Registratie: September 2001
  • Laatst online: 22:16
smeer het uit over een langere periode? Dus gewoon 100x 1000 mensen een e-mailtje sturen?
De eerste x adressen uitlezen, mail hiervoor bouwen en klaarzetten, adres flaggen op "gemaild" en na een kwartier de volgende 1000?

Sometimes you need to plan for coincidence


Verwijderd

Topicstarter
gorgi_19 schreef op 22 September 2003 @ 14:36:
[...]

En door middel van taakplanner de boel 's nachts laten versturen?
De mail moet wel zo snel mogelijk verstuurd worden. De 100.000 emails mogen wel over een periode van bijv. 4 uur verstuurd worden maar niet alleen maar 's nachts want dan verlies je de mogelijkheid om juist tussen 11:00AM en 13:00PM die mail versturen. (Verder zijn we niet moeilijk hoor :))

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

Verwijderd schreef op 22 September 2003 @ 14:39:
De mail moet wel zo snel mogelijk verstuurd worden. De 100.000 emails mogen wel over een periode van bijv. 4 uur verstuurd worden maar niet alleen maar 's nachts want dan verlies je de mogelijkheid om juist tussen 11:00AM en 13:00PM die mail versturen. (Verder zijn we niet moeilijk hoor :))
Hoe frequent gebeurd dit? Eventueel kan je een dedicated bak hiervoor gebruiken.
Aangezien al je mail verkeer vanuit de server een paar uur plat kan liggen en je een performanceprobleem kan krijgen.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Topicstarter
Dedicated bak is voor in de toekomst wellicht een optie alleen wat kosten betreft op dit moment nog niet rendabel. Op dit moment proberen zoveel mogelijk de workload te spreiden over een paar uur zodat de server goed bereikbaar blijft.
Maar als er nog goed ideen zijn over hoe je dat het beste doet dan hoor ik het graag.

[ Voor 16% gewijzigd door Verwijderd op 22-09-2003 15:00 ]


  • Soultaker
  • Registratie: September 2000
  • Laatst online: 01:56
Als ik het goed begrijp, dan is het concrete probleem nu, dat het genereren van alle mailtjes teveel tijd kost om in een ASP request opgenomen te worden. De standaardoplossing hiervoor, is om een wachtrij van taken aan te maken en een apart proces te draaien dat de taken uit de wachtrij haalt en verwerkt. Op deze manier hoeft het ASP proces alleen maar taken aan de wachtrij toe te voegen (bijvoorbeeld, de ID's van de personen die het e-mailtje moeten ontvangen, in de wachtrij stoppen; wat, neem ik aan, vrij snel kan?).

Het probleem voor jou is hierbij dat je een apart programma moet schrijven dat de wachtrij leeghaald. Ook moet je alle voor het versturen van de mailtjes relevante informatie opnemen in je taakomschrijving. Als je al een database gebruikt, kun je dat waarschijnlijk vrij eenvoudig doen en heb je het voordeel dat je direct een plek hebt om je wachtrij in op te slaan.

Nu ben ik geen ASP kenner, maar wellicht is het mogelijk op een aan ASP verwante manier zo'n systeem te implementeren.

Verwijderd

Topicstarter
Soultaker: een oplossing zoals jij omschrijft zat ik ook aan te denken. De concrete implementatie van zoiets zal in de ASP omgeving het beste kunnen in de vorm van een COM-object. Meen ik althans.

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

In het kader van gedachtenspinsels?

Is ASP.Net mogelijk? In dat geval: Laat deze een nieuwe thread starten, met een lage prioriteit. Op deze wijze heeft de performance niet zo heel veel te leiden.

Vast en zeker zal bovenstaande ook mogelijk te simuleren zijn met COM.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Topicstarter
gorgi_19 schreef op 22 September 2003 @ 15:44:
In het kader van gedachtenspinsels?

Is ASP.Net mogelijk? In dat geval: Laat deze een nieuwe thread starten, met een lage prioriteit. Op deze wijze heeft de performance niet zo heel veel te leiden.

Vast en zeker zal bovenstaande ook mogelijk te simuleren zijn met COM.
Denk ik ook.
Pagina: 1