Avatar billede nielsbrinch Nybegynder
05. december 2003 - 00:27 Der er 36 kommentarer og
1 løsning

Send emails hurtigere

Jeg sender lige nu en mængde emails med:
SmtpMail.Send(from, to, subject, body);

Det fungerer fint, dog lidt langsomt. Grunden er at den skal tilslutte til smtp-serveren hver eneste gang den sender en email. Det ville være hurtigere hvis den kunne tilslutte til smtp-serveren og sende alle emails på én gang, så ville båndvidden sikkert også blive udnyttet bedre.

Hvordan?
Avatar billede arne_v Ekspert
05. december 2003 - 00:38 #1
Brug:

SmtpMail.Send(msg);

og sæt alle modtagerne i BCC propertien, så kan du sende alt i et hug !
Avatar billede nielsbrinch Nybegynder
05. december 2003 - 00:49 #2
...og modtagerne ser ikke de andre modtagere i mailen?
Avatar billede thesurfer Nybegynder
05. december 2003 - 00:56 #3
Nej, man kan ikke se de mail adresser der står i BCC.
Avatar billede nielsbrinch Nybegynder
05. december 2003 - 00:58 #4
Vildt nok - gad vide hvorfor folk så bruger diverse scripts og mail-servere til at sende nyhedsbreve med, når de bare kan bruge deres ISP's smtp-server.
Avatar billede thesurfer Nybegynder
05. december 2003 - 01:05 #5
Hvis de der "scripts" er f.eks. ASP scripts, plejer de gerne at oprette forbindelse til webhotellets mail server..
men der findes jo også de der "copy&paste" formmails i perl.. ikke meget at gøre der..
Avatar billede nielsbrinch Nybegynder
05. december 2003 - 01:12 #6
Ulempen ved at bruge BCC: Hvis bare én af adresserne er ugyldig, f.eks. hvis domænet er nedlagt, bliver ingen af dem sendt.

Mange tak for hjælpen, arne
Avatar billede nielsbrinch Nybegynder
05. december 2003 - 01:13 #7
Jeg læste lige gennem det jeg skrev efterfølgende, jeg vil lige understrege at min tak for hjælpen ikke var det mindste ironisk eller noget :-) jeg mente det faktisk.
Avatar billede thesurfer Nybegynder
05. december 2003 - 01:15 #8
LOL! :)
Avatar billede odegaard Nybegynder
05. december 2003 - 02:08 #9
nielsbrinch: ALLE øvrige modtagere får emailen, selvom en enkelt adresse er ugyldig. Sådan er SMTP protokollen nu engang så smart designet, og jeg kan bekræfte fra egen erfaring at det er sådan.
Avatar billede nielsbrinch Nybegynder
05. december 2003 - 12:46 #10
Jeg får denne besked:

The message could not be sent because one of the recipients was rejected by the server. The rejected e-mail address was 'youarestupid@sdf'. Subject 'hey@smoothcriminal;gyxi@gyxi.dk;asdfadfag', Account: 'gyxi.dk', Server: 'mail.tele.dk', Protocol: SMTP, Server Response: '504 <youarestupid@sdf>: Recipient address rejected: need fully-qualified address', Port: 25, Secure(SSL): No, Server Error: 504, Error Number: 0x800CCC79

Og jeg modtog ikke emailen på gyxi@gyxi.dk. Kom igen.
Avatar billede nielsbrinch Nybegynder
05. december 2003 - 12:50 #11
øh, jeg lavede lige en forkert test, slå mig ikke over fingrene nu! :-)
Avatar billede nielsbrinch Nybegynder
05. december 2003 - 12:57 #12
Så, nu fik jeg lavet testen rigtigt, og den siger:

Unhandled Exception: System.Web.HttpException: Could not access 'CDO.Message' object. ---> System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.Runtime.InteropServices.COMException (0x8004020F): The server rejected one or more recipient addresses. The server response was: 550 <hey@soothkhcriminal.com>: Recipient address rejected: Domain not found

Resultatet var at ingen af adresserne modtog mailen. Så det passer altså ikke, odegaard. Måske der er flere forskellige slags SMTP-servere?
Avatar billede arne_v Ekspert
05. december 2003 - 13:13 #13
Ser nærmest ud som om .NET SDK ikke håndterer en fejl kode fra SMTP serveren
særligt godt.

Hvis den ikke fortsætter, så bliver der naturligvis ikke sendt noget.
Avatar billede odegaard Nybegynder
05. december 2003 - 13:20 #14
Tja, jeg kan kun sige at jeg har flere emailadresser der ikke eksisterer, og det forhindrer ikke de øvrige emails at komme ud. Jeg skal ikke kunne sige hvor forskellen ligger.
Avatar billede arne_v Ekspert
05. december 2003 - 13:31 #15
Der er forskel om det er det foran @ eller det bagved @ der
ikke eksisterer.

Der foran checker SMTP serveren ikke. Den tager imod email og sender
mailene videre til den SMTP server hvor MX record for det bagved @ peger.
Og så må den tage sig af om brugeren eksieterer.

Det bagved @ skal SMTP serveren jo checke for at finde den anden SMTP
server. Den her SMTP server checker tilsyneladende allerede ved
RFC 821 RCPT.
Avatar billede odegaard Nybegynder
05. december 2003 - 13:52 #16
Det er vel ikke værre end at man fanger fejlen, søger fejlbeskeden igennem for emailadressen, fjerner denne, og forsøger igen. Så får man samtidigt ryddet op i sin adressedatabase.
Avatar billede nielsbrinch Nybegynder
05. december 2003 - 13:57 #17
Det har jeg netop gjort ... det tager bare en djævelsk tid at sende så - hvis man nu har 50 forkerte, tager det et par minutter at bort-filtrere dem.
Avatar billede odegaard Nybegynder
05. december 2003 - 14:07 #18
tja, mon ikke det tager længere at skulle slette dem senere, når du får en masse emails med fejlbeskeder tilbage i hovedet?
Avatar billede nielsbrinch Nybegynder
05. december 2003 - 14:18 #19
(jeg sætter selvfølgelig en falsk afsender-adresse og skriver min rigtige afsender adresse inde i emailen)
Avatar billede odegaard Nybegynder
05. december 2003 - 14:29 #20
Jeg har det problem at hvis afsender-adressen ikke hører til domænet så, kan den ikke sende emailen, men det betyder også at modtageren ikke automatisk svarer på din egen email adresse, men kun fra én der tilhører serveren.
Det kan dog klares med at tilføje en reply-to header, hvor man knalder sin egen adresse ind.
Fx.
MyMail.Headers.Add("Reply-To", "\"" + strSenderName + "\"" + strSenderEmail);
Avatar billede mufoxe Nybegynder
05. december 2003 - 19:44 #21
Du kan også bruge asynchronous method calls, hvor du starter en tråd uden at vente på at den returnerer. På den måde kan du starte x antal tråde og bare lade dem "sejle i deres egen sø". Det er en ret lækker teknik til at speede interfaces lidt (læs: en del) op.
Avatar billede nielsbrinch Nybegynder
05. december 2003 - 21:46 #22
Det gør jeg også, men det går ikke specielt hurtigere selvom jeg starter en tråd for hver email. Jeg tror det er fordi computeren kun kan have en forbindelse til smtp-serveren ad gangen. Så skal trådene hver især vente på at få forbindelsen og så er der ikke noget vundet.
Avatar billede quaser Nybegynder
06. december 2003 - 00:08 #23
"Det kan dog klares med at tilføje en reply-to header, hvor man knalder sin egen adresse ind.
Fx.
MyMail.Headers.Add("Reply-To", "\"" + strSenderName + "\"" + strSenderEmail);"

Hvad vil hans underlige ide så være i at smide en falsk afsender adresse på.
Hvorfor han overhovedet ønsker at sætte falsk afsender på aner jeg ikke, men det må han jo om.
Avatar billede nielsbrinch Nybegynder
06. december 2003 - 00:10 #24
Fordi jeg ikke gider modtage alle de mails retur der blev sendt til personer der ikke findes længere.
Avatar billede quaser Nybegynder
06. december 2003 - 00:12 #25
Burde være det mindste du kunne gøre, men op ikke andet bør du sætte en gyldig adresse ind, så din email ikke bliver afvist af diverse spamfiltre.
Avatar billede odegaard Nybegynder
06. december 2003 - 14:17 #26
Som jeg siger så kan man slet ikke have en afsenderadresse der ikke tilhører samme domæne som mailserveren. Men hvis man ønsker at modtage svar på en anden adresse på et andet domæne, kan man få lov at sætte reply-to adressen i stedet. Det handler jo ikke om falske adresser, hvor man vil skjule afsenderen. Afsenderadressen står jo stadig i from-feltet.
Avatar billede nielsbrinch Nybegynder
06. december 2003 - 14:41 #27
Jeg bruger gyxi@gyxi.dk til at sende med via mail.tele.dk. De tilhører ikke samme domæne. Det går fint.
Avatar billede odegaard Nybegynder
06. december 2003 - 14:46 #28
Dvs. mail.tele.dk er et open relay?
Avatar billede arne_v Ekspert
06. december 2003 - 14:58 #29
Det er ligegyldigt om afsender email adressen tilhører et andet
domain.

Det afgørende er om den maskine der etablerer forbindelsen til mail-serveren
er forbundet til mail-serveren via en TDC opkobling (dialup, ADSL etc.).

Hvis ja - så kan man sende.

Hvis nej - så kan man ikke sende.
Avatar billede odegaard Nybegynder
06. december 2003 - 15:01 #30
Jeg får nu altså en fejl hvis jeg forsøger med en from-adresse der ikke tilhører godkendte domæner, men det kan da godt være at det er serverspecifikt. I øvrigt så er SMTP serveren localhost, så det skulle næppe være problemer med med hvilken forbindelse man tilhører.
Avatar billede arne_v Ekspert
06. december 2003 - 15:01 #31
Og derfor er mail.tele.dk ikke et åbent mail-relay.

Ikke TDC kunder kan ikke bruge den.

TDC kunder kan bruge den. Men hvis de misbruger den så har de jo
logger afsender IP adresser. Og da de også logger tildeling af IP
adresser til kunde konti, så kan man findes i tilfælde
af misbrug.
Avatar billede arne_v Ekspert
06. december 2003 - 15:03 #32
Jeg vil tro at det er meget normalt at mange mail-servere kun tillader
FROM fra eget domain.

Men mail.tele.dk servicerer jo masser af kunder med eget domain.
Avatar billede odegaard Nybegynder
06. december 2003 - 15:49 #33
Nu skrev jeg jo heller ikke at det kun var ét domæne, men de godkendtE domænER. Fx. er jeg da udemærket klar over at de fleste webhotel-udbydere har flere sites på samme server, og derved flere domæner.
Avatar billede odegaard Nybegynder
06. december 2003 - 15:51 #34
Jeg vil tro at det er en standard ting i IIS'ens SMTP service, at afsenderen skal tilhøre de tilhørende websites.
Avatar billede nielsbrinch Nybegynder
06. december 2003 - 15:56 #35
Jeg tror ikke TDC specifikt har godkendt gyxi.dk som et af deres godkendte domæner.
Avatar billede arne_v Ekspert
06. december 2003 - 15:59 #36
Næppe.

Men der er nok også stor forskel på en out-of-the-box-IIS
og mail.tele.dk !
Avatar billede slapstick Nybegynder
06. juni 2005 - 12:50 #37
tdc's smtp server tillader jo bare folk der er på med en tdc forbindelse at sende mails igennem
den er så vidt jeg ved fløjtende ligeglad med ens afsender adresse
jeg sender da ihvertfald mails med et ikke tdc domæne hver eneste dag uden problemer
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