03. september 2003 - 12:02Der er
35 kommentarer og 1 løsning
JMAIL (hos Azero.dk) driller ved masseudsendelse
Jeg har i en årrække udsendt 4-500 mails ved at lade et SQL udtræk loope henover nedenstående script. Ikke de store problemet andet end timeouts, som reddes ved at sætte tiden op.
Forleden skulle jeg udsende +1200 mails over samme læst. Koden meldte ikke fejl, men men men.
De første ca. 600 mails kom ud uden problemer, så var der en pause på 300 mails, som returenede. så sendte den igen en 20-30 stykker og returnerede resten.
Fejlkoden heftet til de returnerede mails er:
Action: failed Status: 5.0.0 Diagnostic-Code: smtp;552 130.227.30.41: your message counts in one session of 50 exceeds maximum setting 20
------- Jeg er bekendt med, at (Azero) anbefaler, at man closer forbindelsen hver 20 gang, problemet er tofold:
Ingen andre steder på nettet beskæftiger sig med denne egenskab ved jmail ( er det et Azoero.dk problem ?)
Jeg har for under 500 mails uden problemer kunne bruge nedenstående script:
------------------------------- findes i en include file ---- if Mailtype=1 then
Set JMail = Server.CreateObject("JMail.SMTPMail") JMail.Logging = true JMail.silent = true
JMail.ServerAddress = "websmtp.ZZZZZZ.dk" JMail.SenderName = "ZZZZZ NYT" JMail.Sender = "admin@ZZZZZ.dk" JMail.Subject = subject JMail.AddRecipient Email JMail.Priority = JMail.AddHeader "Originating-IP", Request.ServerVariables ("REMOTE_ADDR") JMail.Body=BodyTextto if not JMail.Execute then Response.write "<pre>" & JMail.log & "</pre>" else 'Response.write "Mail OK" 'Response.write Email & "<b>" 'Response.write subject & "<b>" 'Response.write BodyTextto end if JMail.close set JMail = nothing
End if ---------------------------
Er der andre der kender til problemet og evt. en løsning. Azero.dk skulle angiveligt for nyligt have opgraderet til Jmail 4.3.1 ---> Burde jeg køre med en nyere objectmodel med andre metode- og variabel- navne ??
Er der en effektiv måde at sende op til 2000 mails ud med JMAIL ( hos Azero.dk) kodet i ASP. Azeros løsning har været oprettelsen af en mailliste.
Da alt opdatering af mails mv. foregår via MYSQL er det den vej en evt. mailliste skal vedligeholdes. Er der et eks. på opdatering af maillisten ( en tekstfil som man ikke mere har adgang til via FTP) via ASP ??? ( Jeg tror de bruger Merek mailserver 5.8.6)
Det var meget, men hvis man et par gange har sendt JMAILjunk ud til El Pueblo blive man hængt op i tomlerne uanset årsag.
når man skal sende mange mails ud er det vigtigt ikke at sætte alle egenskaber hver gang men kun dem der ændrer sig. særlig .serveradress tenderer til at sløve jmail ned
dvs i løkken der sender skal kun bruges de egenskaber der ændrer sig hver gang ved en mailing liste er det vel typisk modtageren JMail.AddRecipient
en anden ting ved jmail er massmailing funktionen. den gør brug af mailserverens pickup directory. det betyder jo så at det kun er filhåndtering den laver da den ikke længere skal lave den direkte smtp kommunikation med andre mailservere.
When using Dimac’s w3 JMail as a mass mailer, you will use the method nq(). nq() on the other hand uses the SMTP service provided by Microsoft Internet Information Server (IIS).
The SMTP service has a directory where it polls for e-mails. It is called MS Pickup directory and it is by default created as C:\Inetpub\mailroot\Pickup. 1. The MS SMTP service must be installed on the machine where w3 JMail is to be used (or on a remote machine where w3 JMail can access its pickup directory). Other SMTP servers can be used as well, if they support mail delivery through a pickup directory.
2. The queueing function is dependant of w3 JMail being able to access to mail servers’ pickup directory (often located in c:\inetpub\mailroot\pickup, depending on your installation). Therefore, the fi lesystem permissions sometimes have to be adjusted to allow the IIS guest account (IUSR) to access it.
3. Unless you are running MS Windows 2000 or later, you need to specify the location for w3 JMail to fi nd the pickup directory. You can do this either at runtime, like this:
Problemet med Merek er nok ikke pickup, da den skulle kunne håndtere +10.000 mails. Problemet er håndteringen af maillisten under Mereks mailserver, nu da man ikke kan skrive filen direkte og lægge den med i mappen med f.eks. file server objektet. Er den enenste løsning af danne en mail med Jmail og sende 'listen' til listserv@xxxx.dk
Azero om pick up mappen: JMail pickup directory (queue) der bruger en lokal SMTP server, dette virker kun for serverkunder med lokal IIS SMTP server installeret
Kan jeg bruge pickup directory til JMail (nq, queuing)? Nej, det findes ikke på vores webservere for øjeblikket. Du kan eventuelt følge med på projekter for at se om vi indfører det.
Hvordan bruger jeg nq/Queue/MSPickupdirectory? Det kan man kun hvis der kører en lokal SMTP service. Vi kører en fælles SMTP service og du kan derfor ikke bruge Queuing.
--- Jeg har selv oprindelig tænkt på belastningen af serveren ved at åbne og lukke JMAIL objektet for hver mail. I min tankegang betyder commandoen .close at man lukker objektet. Dette er nok ikke tilfældet i virkeligheden:
Force JMail to close an cached connection to a mailserver: JMail.Close();
Du er sandelig hurtig og jeg fik sendt denne uden at fundende den. Min tanke er at få JMAIL op at snurre rigtig, Hvis .close ikke lukker objektet, så er muligheden for ikke at belaste serveren for meget, at
1. åbne objektet og tildele standard værdierne. 2 loope over tabellen 2.1 .addrecipientbcc op til 20 emails , .execute() og .close() 3 set object to nothing and exit
Jeg vil teste dette i aften på min egen AZERO mail admin ( så evt. fejl ikke lander i de 'forkerte' hænder).
Skal der ikke anvendes andre metoder og variabel navne for version 4.3 JMAIL ? Tilsyneladende virker de gamle udtryk - på et gammelt objekt ?? Henrik
set msg = Server.CreateOBject( "JMail.Message" ) if not msg.Send("mail.myDomain.net" ) then Response.write "<pre>" & msg.log & "</pre>" else Response.write "Message sent succesfully!"
Jeg kan ikke se, om AZERO upper dette objekt eller f.eks. jmail.speedmailer Det må komme an på en prøve. end if
Det kan godt være, at hele misæren ligger i et gammelt objekt. Det mest effektive ville være .BulkMerge() over en template til et pickup område, men det understøttes jo ikke hos AZERO
Mit problem med .AddRecipientBCC() er at jeg gerne sendte en 'personlig' hilsen som 'Hej Peter ...'
Kan du gøre det mere effektivt end ovenstående 1..3 looping ??
sætte objektet sætte statiske egenskaber gennemløbe mit recordset i løkker á 500 poster for hvert gennemløb sætte modtageremail, subject lukke objektet ned
starte forfra indtil jeg ikke har flere i min database
>>vbcoder Det er da et tilbud. Det er et par foreninger, som jeg lagt ud hos AZERO De forventer qua manglende viden, at sådan noget bare virker. Fair nok.
Lad mig komme tilbage hvis det bliver aktuelt. Jeg har selv tænkt på at sætte en dedikeret server op, men kan hamle op med nuværende hotelpriser. Jeg må lige teste med det nye objekt. Kan være, at det virker.
to nettoposer under øjnene. JMAIL ( eller modtager mailsystemet TDC ) har et problem. Banker 999 mails afsted med nedenstående kode. De 560 ok - hul indtil 960 hvorefter resten kommer. Sender systemet bliver sløvere og sløvere - det har virkeligt fået noget at lave - når enden uden at time ud.
Sender mail får retur fra TDC - Mail System Error- Returned mail
Måske skulle man lave et ydre loop, der kalder siden op for at sende say 100 af gangen. Nu er det sengetid.
<% Email = "xxx@yyy.dk" ENavn = "Henrik Nielsen" subject = "test af mailserver" BodyTextto = " Hej det er Henrik" FromNavn = "xxx NYT" FromMail = "admin@xxx.dk" SMTPNavn = "websmtp.xxx.dk" grundnr ="0000" mailnr=1 mailmax = 999 Session.Timeout = 40 Server.ScriptTimeout =1800 '-------------- start------------------------ ' dimarc 4.3 JMAIL Set JMail = Server.CreateOBject( "JMail.Message" ) JMail.Logging = true JMail.silent = true JMail.From = FromMail JMail.FromName = FromNavn JMail.Priority = 3 JMail.AddHeader "Originating-IP", Request.ServerVariables("REMOTE_ADDR") ' ---------------------Loop del ---------------------- do while mailnr <= Int(mailmax) taeller = " " & left(grundnr,4-len(cstr(mailnr))) & cstr(mailnr) JMail.Subject = subject & taeller JMail.AddRecipientBCC Email, Enavn JMail.Body="Velkommen " & Enavn & " " & BodyTextto & taeller if not JMail.Send(SMTPNavn) then Response.write "<pre>" & JMail.log & "</pre>" else Response.write "Mail OK" & "-->" Response.write Email & "<b>" & "-->" Response.write subject & taeller & "-->" Response.write BodyTextto & "</br>" end if If (mailnr MOD 20) = 0 then JMail.Close() Response.write "Con Lukket <br>" Response.flush If Response.isclientconnected()=false THEN Response.Write "Vi tabte forbindelsen .... " EXIT DO END IF Response.flush end if mailnr= mailnr+1 loop
'-------------------------- slutstadie --------------------------------------- set JMail = nothing %>
Problemet er måske det samme, når man sender til en kooperativ mailbox.
Nu var der ikke så meget i de 999 mails ( 1.000 mails er iøvrigt loftet hos TDC). Af en eller anden grund, så tømmes .AddRecipient ikke, når mailen sendes, men først, når objektet lukkes. Logisk nok men det fylder op i CC, som oprindeligt kun skulle indeholde 1 mailadresse.Gad vide om der er en kommando til at tømme .AddRecipient.
Derfor ændrede jeg koden til .AddRecipientBCC. Ved at sende efter hver mail, kan jeg lave individuelle mails.
Jeg har sendt en request på den HP om at se koden.
Det udvikler sig idet jeg stadig får 'mail system error' sendt fra systemet. Nu er fejlkoden klippet sammen med danske og norske kollegaers (personlige) mails. Nu har jeg dog slettet hele baduljen, men det ser ud til at modtager server ikke rigtig er klædt på til at modtage så meget fra en server.
Det er tydeligt, at .addrecipient sætter er grim stor header. Norton antispam/viruscheck etc. har nok også sin del.
hej - jeg kan se, at det store ændring er for løkken, som må være hurtigere fordi den ikke skal teste hele tiden som i loopet.
Et eller andet sted tror jeg det er et modtager problem at tage mere end de 500 pr gang. Nu vil jeg teste det, når jeg kommer hjem og efter madgryderne, men jeg kan se, at du er gået væk fra AddRecipientBCC til fordel igen for AddRecipient - den var specielt med til at bygge en header op, som ikke er nødvendig. AddRecipientBCC er god nok, når jeg tildeler .body en ny værdi for hvert gennemløb ?
Jeg kan se på AZERO, at ca. 50 errormails fylder ca. 2 MB, så headeren bliver stor til sidst 1000 x Ander and + A@a.dk
Nu da man skal have fyldt og tømt så mange mailboxe kan jeg varmt anbefale http://n247.net/JMailbox - den er lige til at gå til (i 0.82 udgaven - 0.9 er der et par ting der ikke virker i f.eks. win XP)
Han lader grønt græs spire frem til dyrene, og planter til menneskenes tjeneste, så han frembringer brød af jorden, og vin der fryder det dødelige menneskes hjerte, ja, han lader ansigtet glinse af olie, og giver brød der styrker det dødelige menneskes hjerte.
Lad mig blot spinne en ende. Efter megen masen frem og tilbage har modtager webansvarlige indrømmet, at de har sat et spamfilter op, som bouncer alt efter email nr. 20. Det var slet ikke jmail, som havde problemet. Alt den snak, fordi AZEROs hotline ikke spotte problemet, men faldt tilbage på standardsvaret.
Roger Over.
Synes godt om
Ny brugerNybegynder
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.