Avatar billede fangel Nybegynder
09. marts 2003 - 10:11 Der er 11 kommentarer og
1 løsning

30.000 mails uden overkill

Hej

jeg sidder og laver et nyhedsbrev's script... og normalt ville jeg bare sende via et kald til mail() per bruger... men nu  skal scriptet bruges på en side med 30.000 brugere... og så tænker jeg det er lidt overkill...

man må ikke kunne se de andre brugere som mailen er sendt ud til...

hvordan gør man det uden at lave overkill? med en socket til en smtp server? eller hva?

Morten
Avatar billede somaliomar Praktikant
09. marts 2003 - 10:15 #1
Avatar billede somaliomar Praktikant
09. marts 2003 - 10:19 #2
Avatar billede fangel Nybegynder
09. marts 2003 - 10:19 #3
OK... dvs egen SMTP server... det vil jeg lige undersøge...
Avatar billede fangel Nybegynder
09. marts 2003 - 10:41 #4
nu har jeg prøvat at stykke følgende kode sammen... nu venter jeg og ser om jeg modtager en mail...

<?php

$socket = fsockopen("smtp.mail.dk",25);
if($socket){
  fputs($socket, "HELO xyz\n");
  $log = fgets($socket, 2000) . "<br>";
  fputs($socket, "MAIL FROM: mfa@desi-dev.dk\n");
  $log .= fgets($socket, 2000) . "<br>";
  fputs($socket, "RCPT TO: morten_fangel@tdcadsl.dk\n");
  $log .= fgets($socket, 2000) . "<br>";
  fputs($socket, "DATA\n");
  $log .= fgets($socket, 2000) . "<br>";
  fputs($socket, "To: morten_fangel@desi-dev.dk\n");
  fputs($socket, "From: mfa@desi-dev.dk\n");
  fputs($socket, "Subject: PHP SMTP testmail...\n");
  fputs($socket, "\n");
  fputs($socket, "testindhold af mailen...\n");
  fputs($socket, ".\n");
  $log .= fgets($socket, 2000) . "<br>";
  fputs($socket, "QUIT\n");
  $log .= fgets($socket, 2000) . "<br>";
  echo $log;
}
else{
  echo "no socket";
}
?>

jeg for ihvert fald følgende output:
220 pfepb.post.tele.dk ESMTP
250 pfepb.post.tele.dk
250 Ok
250 Ok
354 End data with .
250 Ok: queued as 476135EE39C

så jeg skulle mene jeg modtager den om lidt...

Moretn
Avatar billede fangel Nybegynder
09. marts 2003 - 10:42 #5
der kom mailen... så det virker... ;) wee

Morten
Avatar billede fangel Nybegynder
09. marts 2003 - 10:45 #6
et spm... hvis jeg skal lave en vild og frådig løkke... hvor meget skal så gentages.. skal der gentages fra

HELO
til (men ikke med)
QUIT

eller er det fra
MAIL FROM
til (med ikke med)
QUIT

Morten
Avatar billede fangel Nybegynder
09. marts 2003 - 10:55 #7
sådan... følgende script virker for mig...

<?php

//includering af funktions bibloteker
include("./inc/ob.inc.php");
include("./inc/settings.inc.php");
include("./inc/mysql.inc.php");
include("./inc/auth.inc.php");

//startning af session
session_start();

$socket = fsockopen("smtp.mail.dk",25);
if($socket){
  fputs($socket, "HELO xyz\n");
  $log = fgets($socket, 2000) . "<br>";

  $query = doQuery("SELECT email FROM users", true);
  while($data = mysql_fetch_row($query)){

    fputs($socket, "MAIL FROM: mailrobot@message.dk\n");
    $log .= fgets($socket, 2000) . "<br><hr><br>";
    fputs($socket, "RCPT TO: " . $data[0] . "\n");
    $log .= fgets($socket, 2000) . "<br>";
    fputs($socket, "DATA\n");
    $log .= fgets($socket, 2000) . "<br>";
    fputs($socket, "To: " . $data[0] . "\n");
    fputs($socket, "From: mailrobot@message.dk\n");
    fputs($socket, "Subject: PHP SMTP testmail...\n");
    fputs($socket, "\n");
    fputs($socket, "testindhold af mailen...\n");
    fputs($socket, ".\n");
    $log .= fgets($socket, 2000) . "<br>";

  }

  fputs($socket, "QUIT\n");
  $log .= fgets($socket, 2000) . "<br>";
  echo $log;
}
else{
  echo "no socket";
}
?>

nu laver jeg det lidt videre så det skriver loggen som en .txt fil... ;) men da somaliomar kom med et par links til hvordan et sådanne script kunne se ud, ja så er der 30p til ham...

Morten
Avatar billede somaliomar Praktikant
09. marts 2003 - 11:09 #8
Godt nok og tak for points :)
Avatar billede bearhugx Nybegynder
09. marts 2003 - 14:35 #9
(ellers - er det ikke muligt at indsætte alle adresserne i Blind Carbon Copy ??? (bcc:))
Avatar billede fangel Nybegynder
09. marts 2003 - 15:37 #10
det er muligt...

Morten
Avatar billede je79ayps Novice
10. marts 2003 - 14:21 #11
Lige et spg. - er det en MySQL db du henter adresserne fra?
Avatar billede fangel Nybegynder
10. marts 2003 - 17:34 #12
jep...
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
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

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