Hallo,

wir haben so so gelöst. Leider musste ich einige Teile rausnehmen da diese zu einer fremden Mailklasse gehören.

Ich denke aber damit lässt sich dein Problem schnell lösen.

Außerdem kann ich aus Zeitgründen leider keine Support geben!
Füre das im Phpmyadmin aus:

PHP-Code:
CREATE TABLE IF NOT EXISTS `vms_mail_cache` (
  `
idint(11NOT NULL AUTO_INCREMENT,
  `
anvarchar(250NOT NULL,
  `
vonvarchar(250NOT NULL,
  `
betreffvarchar(250CHARACTER SET latin1 COLLATE latin1_german1_ci NOT NULL,
  `
mailtext NOT NULL,
  
PRIMARY KEY (`id`)
ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=25223 
ersetze die Funktion usermail in lib/extras.lib.php mit dieser hier:

PHP-Code:
function usermail ($an$betreff$nachricht$von$cache='1') {
    if (
$cache == 0) {

            
// hier die Mailfunktion zum direktversand der Mail    
        
} else {
        
db_query ('INSERT INTO vms_mail_cache (an, betreff, mail) VALUES ("'.mysql_real_escape_string($an).'", "'.mysql_real_escape_string($betreff).'", "'.mysql_real_escape_string($nachricht).'")');
    }

Dort kommt der Wert Cache dazu wenn Ihr die Mail direkt verschicken wollt müsst Ihr den wert in der Funktion auf 0 setzen ( Standart ist 1)

Dies ist zum Beispiel bei der Anmeldung ganz sinnvoll.


Danach brauch Ihr noch einen Cron der immer ein paar Mails aus der Datenbank holt und verschickt. Leider musste ich diesen arg anpassen da bei uns eine fremde klasse genutzt wird und ich gerade nicht weiß ob wir diese veröffentlichen dürfen.

Ihr müsst also noch im ganzen script den versand einbauen. Dies geht entweder mir function mail() oder ihr baut euch noch eine smtp klasse ein.

Den Cron könnt Ihr alle Paar Minuten aufrufen es werden dann immer 75 Mails verschickt.


PHP-Code:
<?php

    $mails 
db_query('SELECT * FROM vms_mail_cache LIMIT 75')or die(mysql_error());
    while(
$row mysql_fetch_array($mails)) {
        
        if(!
preg_match("/^([a-zA-Z0-9])+([a-zA-Z0-9\._-])*@([a-zA-Z0-9_-])+([a-zA-Z0-9\._-]+)+$/" $row['an'])) {
            echo 
'Fehler in der E-Mail-Adresse <strong>'.$row['an'].'</strong><br>';
            continue;
        }

        
// hier noch die funktion mail() zum verschicken
       
    
echo 'Message has been sent.<br>';
        @
db_query('DELETE FROM vms_mail_cache WHERE id = '.$row['id']);
    }

?>
Leider musste ich einiges rausnehmen ich denke aber vom Prinzip her sollte es klar sein :-).