[PHP][EXCHANGE] Mailingen via Exchange vanuit PHP

Pagina: 1
Acties:

Onderwerpen


Verwijderd

Topicstarter
Ik heb een server waarop draait:

- Windows Server 2003
- Apache2 met PHP & MYSQL

Daar draait een database met een tabel met 2500 namen en emailadressen. Deze worden (incl. email-subject, email-body enz) per 500 in een array $toArray gestopt. Daarna gaan deze door de onderstaande functie. Er worden dus 500 mailtjes per keer verzonden.

Met verzenden van de mails doe ik zo omdat de standaard php mail() over zn nek ging bij 10000 mails.

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
$connect = fsockopen (ini_get("SMTP"), ini_get("smtp_port"), $errno, $errstr, 30) or die("Could not talk to the sendmail server!"); 
$rcv = fgets($connect, 1024); 

fputs($connect, "HELO {$_SERVER['SERVER_NAME']}\r\n"); 
$rcv = fgets($connect, 1024); 

$Cnt_t = 0;
$aantal = count($toArray);
while ($Cnt_t < $aantal) { 
    fputs($connect, "MAIL FROM:".$mail_from_email."\r\n"); 
    $rcv = fgets($connect, 1024); 
    fputs($connect, "RCPT TO:".$toArray[$Cnt_t][0]."\r\n"); 
    $rcv = fgets($connect, 1024); 
    fputs($connect, "DATA\r\n"); 
    $rcv = fgets($connect, 1024); 
            
    fputs($connect, "Subject: ".$toArray[$Cnt_t][1]."\r\n"); 
    fputs($connect, "From: ".$mail_from_name." <".$mail_from_email.">\r\n"); 
    fputs($connect, "To: ".$toArray[$Cnt_t][0]."  <".$toArray[$Cnt_t][0].">\r\n"); 
    fputs($connect, "X-Sender: <".$mail_from_email.">\r\n"); 
    fputs($connect, "Return-Path: <".$mail_reply.">\r\n"); 
    fputs($connect, "Reply-To: ".$mail_reply."\r\n"); 
    fputs($connect, "MIME-Version: 1.0\r\n"); 
    fputs($connect, "Errors-To: <".$mail_reply.">\r\n"); 
    fputs($connect, "X-Mailer: PHP / ".phpversion()."\r\n"); 
    fputs($connect, "X-Priority: 0\r\n"); 
    fputs($connect, "Content-Type: text/html; charset=iso-8859-1\r\n"); 
    fputs($connect, "\r\n"); 
    fputs($connect, stripslashes($toArray[$Cnt_t][2])." \r\n"); 
            
    fputs($connect, ".\r\n"); 
    $rcv = fgets($connect, 1024); 
    fputs($connect, "RSET\r\n"); 
    $rcv = fgets($connect, 1024); 
            
    $Cnt_t++;
}
    
fputs ($connect, "QUIT\r\n"); 
$rcv = fgets ($connect, 1024); 
fclose($connect);


Ik heb het getest met 2500 ontvangers met hetzelfde emailadres en dat gaat perfect. Wanneer ik 2500 verschillende emailadressen heb gaat het fout en krijg de onderstaande foutmelding:

fputs(): send of 26 bytes failed with errno=0() An established connection was aborted by the software in your host machine.

- Kan het zijn dat Exchange een maximum stelt aan het aantal verschillende domeinen wat in de que mag?
- Als het niet Exchange is wat zou het anders kunnen zijn?

Ps. Ik kan niet met BCC werken omdat elke email met een persoonlijke aanhef begint!

  • RedRose
  • Registratie: Juni 2001
  • Niet online

RedRose

Icebear

Gaat Exchange niet over zn nek door de lengte van de bytes (1024) ? Probeer het eens zonder lengte te doen. :)

Bouw ook wat meer checkpunten in ala:
PHP:
1
2
3
4
5
if (fwrite($connect, $mooh) === FALSE)
{
       echo "Oeps";
       exit;
}

[ Voor 38% gewijzigd door RedRose op 19-08-2004 10:59 ]

Sundown Circus


Verwijderd

Topicstarter
Dat is de standaard lengte (1k = 1024) dus daar ligt het niet aan. Als het mailtje bijv. 7k is zou deze daar dan over zn nek kunnen gaan...? Dat kan ik es proberen.

Maar misschien zijn er meer die dit soort software gemaakt hebben onder PHP...hoe doen jullie dit dan?

  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 20-09 23:58

TeeDee

CQB 241

Wij doen het hier op de volgende manier.
Een .txt file in de Pickup(oid) van Exchange droppen. Werkt ook gewoon goed.

[ Voor 3% gewijzigd door TeeDee op 19-08-2004 11:12 ]

Heart..pumps blood.Has nothing to do with emotion! Bored


  • RedRose
  • Registratie: Juni 2001
  • Niet online

RedRose

Icebear

Verwijderd schreef op 19 augustus 2004 @ 11:06:
Dat is de standaard lengte (1k = 1024) dus daar ligt het niet aan.
Lees de PHP-manual bij fwrite...

Check ook je Exchange System Manager op het 'Limit number of recipients per message to'.

[ Voor 5% gewijzigd door RedRose op 19-08-2004 11:18 ]

Sundown Circus


Verwijderd

Topicstarter
TeeDee schreef op 19 augustus 2004 @ 11:11:
Wij doen het hier op de volgende manier.
Een .txt file in de Pickup(oid) van Exchange droppen. Werkt ook gewoon goed.
Kun je me hier iets meer over vertellen? Als je iets dropt pakt Exchange dat vanzelf of moet je daar nog een action starten o.i.d.?

  • RedRose
  • Registratie: Juni 2001
  • Niet online

RedRose

Icebear

Verwijderd schreef op 19 augustus 2004 @ 11:32:
[...]


Kun je me hier iets meer over vertellen? Als je iets dropt pakt Exchange dat vanzelf of moet je daar nog een action starten o.i.d.?
Heb je uberhaupt controle over die server? :?

Heb je al eens op MSDN, de PHP-site en Google gezocht?

[ Voor 10% gewijzigd door RedRose op 19-08-2004 11:39 ]

Sundown Circus


Verwijderd

Topicstarter
kHeb controle over de server ja...

Heb even gegoogled en ben het nu aan het testen.

edit: een txt file in de pickup zetten werkt!

Ik zit alleen nog met het probleem hoe ik er een HTML mail van kan maken (waarschijnlijk iets extra's meegeven) ??

En hoe ik vanuit PHP iets in de Pickup directory krijg?

[ Voor 24% gewijzigd door Verwijderd op 19-08-2004 11:56 ]

Pagina: 1