php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2004-2

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 16.12.2004, 22:35  
Gast
 
Beiträge: n/a
Standard eMail Versand verzögern damit alle gesendet werden

Hallo,

ich habe versucht sicherzustellen, dass alle eMails versendet werden. Deshalb habe ich den eMailversand durch die funktion usleep() verzögert.
Code:
	for	( $ii = 1 ; $ii < $anz_datensaetze ; $ii++)						// schleife zum abklappern der einzelnen emails
	{
		echo $ii." ";
		echo $name = mysql_result($ergebnis, $ii, "name");
		$email = mysql_result($ergebnis, $ii, "email");
		
		if ($email=='') echo " Keine eMailaddresse vorhanden";
		
		else 
		{
		//sende mail
			if (isset ($eintrag[7]))
			{
				mailschickenhtml($email,$eintrag[1],$eintrag[2],$eintrag[3],$eintrag[8]);
			}
			else
			{
				mailschickentext($email,$eintrag[1],$eintrag[3]);
			}
		
		echo " ".$email;
		echo " eMail gesendet!";	
		}
		
		echo "
";
		usleep(100);	
    }
meint ihr dass das reicht, oder habt ihr andere Erfahrungen gemacht. Ich werde maximal 250 eMails mit diesem Skript auf einmal versenden. Wird das reichen??

Gruß Alex
 
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 16.12.2004, 22:44  
Gast
 
Beiträge: n/a
Standard

Hmm ich versende 3000 und mehr Mails auf einmal, wo genau liegt dein Problem?
 
Alt 17.12.2004, 08:36  
Gast
 
Beiträge: n/a
Standard

Ich habe mal gehört, dass manche Provider so viele Mails auf einmal als Spam abfangen. Daher habe ich versucht einen Mittelweg zwischen dieser Zeit und dem Timeout zu finden. Wenn das Skript zu lange bei der ausführnug braucht, wird es doch abgebrochen, oder?
 
Alt 17.12.2004, 08:41  
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von alex10784
Ich habe mal gehört, dass manche Provider so viele Mails auf einmal als Spam abfangen. Daher habe ich versucht einen Mittelweg zwischen dieser Zeit und dem Timeout zu finden. Wenn das Skript zu lange bei der ausführnug braucht, wird es doch abgebrochen, oder?
Maximale Ausführzeit kann man einstellen, geht aber nicht wenn du nur Webspace hast. Brauchst schon mehr Rechte dafür.
 
Alt 17.12.2004, 08:53  
Gast
 
Beiträge: n/a
Standard

d.h. ich warte jetzt nach jeder mail 100 usecunden = 1/10 sekunde, stimmts? das sollte doch reichen um alle mail zu versenden, oder soll ich das einfach komplett weglassen?
 
Alt 17.12.2004, 08:56  
Erfahrener Benutzer
 
Registriert seit: 19.10.2004
Beiträge: 498
marsch
Standard

Zitat:
Zitat von alex10784
d.h. ich warte jetzt nach jeder mail 100 usecunden = 1/10 sekunde, stimmts? das sollte doch reichen um alle mail zu versenden, oder soll ich das einfach komplett weglassen?
Ich verstehe Dich ganz und gar nicht.
Mit PHP schiebst Du Deine Mails an den lokalen MTA. Der sollte auch 10000 und mehr Mails in der Queue verkraften, oder? Der kümmert sich auch um die Zustellung zu den Ziel-MTAs, und wenn die einen 4xx-Fehler bringen, versucht es der MTA nochmal. Deine Aufgabe ist es nur, alle Mails Deinem MTA zu geben, und der ist fix und clever genug.
__________________
Cheers, Marco
marsch ist offline  
Alt 17.12.2004, 09:05  
Gast
 
Beiträge: n/a
Standard

ok das wusste ich nicht. d.h. ich lasse die ganzen verzögerungen weg und es klappt.

Danke!
 
Alt 17.12.2004, 09:35  
Erfahrener Benutzer
 
Registriert seit: 19.10.2004
Beiträge: 498
marsch
Standard

Zitat:
Zitat von alex10784
ok das wusste ich nicht. d.h. ich lasse die ganzen verzögerungen weg und es klappt.

Danke!
Es sollte
Wenn Dich jemand blockt, weil Du eine Mailbombe gezündet hast, wirst Du es an der deferred-Queue erkennen.
__________________
Cheers, Marco
marsch ist offline  
Alt 17.12.2004, 15:15  
Gast
 
Beiträge: n/a
Standard

Jetzt habe ich die Wartezeit komplett weggelassen. Wenn ich jetzt aber sende, dann passiert das ganze, aber er macht es nicht fertig und er bleibt bei der seite mit den formulareingaben. Ich weiss sicher, dass einige eMails versendet werden, aber andere wiederum garnicht. woran kann das iegen?
Ich habe das Skript ohneden mailversand probiert, das geht perfekt. Er gibt danach auch die emailadressen aus, an die er bei dem schleifendurchgang durch die datenbank eine mail schicken würde. Woran könnte das denn liegen, dass er das Skript offensichtlich nicht beendet?
Für Sonstige Tips für mein Skript bin ich gerne offen, bin ja noch Anfänger

Hier ist mal das ganze Skript..

Code:
<?php

$mailnormal = 1;							// parameterzähler, wenn = 4 dann keine massenmail;

$eintrag[0]  = $_POST['receiver'];			//liest die form und speichert in den entsprechenden werten
$eintrag[1]  = $_POST['subject'];
$eintrag[2]  = $_POST['sender'];
$eintrag[3]  = $_POST['message'];

$eintrag[4]  = $_POST['aktivitas_frag'];
$eintrag[5]  = $_POST['ah_frag'];
$eintrag[6]  = $_POST['keilg_frag'];

$eintrag[7]  = $_POST['html_frag'];
$eintrag[8]  = $_POST['name'];

$anzahl_mails = 1;

//------------ Prüfung der empfänger --------------

if (isset ($eintrag[4]))
{
	$aktivitas = true;
	
	// ------------------------- //
	// mails an aktivitas senden //
	// ------------------------- //
	
	include 'verbindung_datenbank_usr1.php'; 

	$sql_abfrage = "SELECT * FROM ghibellinia_aktive WHERE id LIKE '%%'";	// sql abfragesatz

	$ergebnis = mysql_query($sql_abfrage);									// eigentliche abfrage
	$anz_datensaetze = mysql_num_rows($ergebnis);

	echo "Es gibt ".$anz_datensaetze." Empfänger

";

	for	( $ii = 1 ; $ii < $anz_datensaetze ; $ii++)						// schleife zum abklappern der einzelnen emails
	{
		echo $ii." ";
		echo $name = mysql_result($ergebnis, $ii, "name");
		echo "  ";
		$email = mysql_result($ergebnis, $ii, "email");
		
		if ($email=='') echo " Keine eMailaddresse vorhanden";
		
		else 
		{
		//sende mail
			if (isset ($eintrag[7]))
			{
				mailschickenhtml($email,$eintrag[1],$eintrag[2],$eintrag[3],$eintrag[8]);
			}
			else
			{
				mailschickentext($email,$eintrag[1],$eintrag[3]);
			}				
		}
		//usleep(20);											
	}
	mysql_close ($db_handle);

}
else
{
	$mailnormal++;
}

if (isset ($eintrag[5]))
{
$ah = true;

	// ------------------ //
	// mails an ah senden //
	// ------------------ //
	
	include 'verbindung_datenbank_usr1.php'; 	
	
	$sql_abfrage_ah = "SELECT * FROM ghibellinia_ah WHERE id LIKE '%%'";	// sql abfragesatz
	
	$ergebnis_ah = mysql_query($sql_abfrage_ah);									// eigentliche abfrage
	$anz_datensaetze_ah = mysql_num_rows($ergebnis_ah);
	
	echo "

Es gibt ".$anz_datensaetze_ah." Empfänger

";	

	for ( $ij = 1 ; $ij < $anz_datensaetze_ah ; $ij++)						// schleife zum abklappern der einzelnen emails
	{
		echo $ij." ";
		echo $name_ah = mysql_result($ergebnis_ah, $ij, "name");
		echo "  ";
		$email_ah = mysql_result($ergebnis_ah, $ij, "email");
		
		if ($email_ah =='') echo " Keine eMailaddresse vorhanden";
		
		else 
		{
		//sende mail
			if (isset ($eintrag[7]))
			{
				mailschickenhtml($email_ah,$eintrag[1],$eintrag[2],$eintrag[3],$eintrag[8]);
			}
			else
			{
				mailschickentext($email_ah,$eintrag[1],$eintrag[3]);
			}
		}
		//usleep(20);
	}
	mysql_close ($db_handle);


}
else
{
	$mailnormal++;
}

if (isset ($eintrag[6]))
{
$keilg = true;

// mails an gäste senden

}
else
{
	$mailnormal++;
}

if ($mailnormal == 4)
{
	if (isset ($eintrag[7]))
	{
		mailschickenhtml($eintrag[0],$eintrag[1],$eintrag[2],$eintrag[3],$eintrag[8]);
		
	}
	else
	{
		mailschickentext($eintrag[0],$eintrag[1],$eintrag[3]);
	}
}

// -------------------------------------------------------------------------//
// ------------------------ HTML MAIL SENDEN -------------------------------//
// -------------------------------------------------------------------------//

function mailschickenhtml($parameter0,$parameter1,$parameter2,$parameter3,$parameter4)  // zum testen aus
{
	$to = $parameter0;				// ampfängeraddresse
	$subject = $parameter1;			// betreff der nachricht
	$name = $parameter4;			// name des sender

	/* eMail-Informationen */
	$mail_title = "Rundmail";

	/* Nachricht */
	$message = "
		<html>
		<head>
			<title>$mail_title</title>
		</head>
		<body>
		Das ist eine Rundmail gesendet von ".$name." durch unsere Webseite:



		$parameter3
		</body>
		</html>
	";

	$headers  = "MIME-Version: 1.0\r\n";
	$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
	$headers .= "From: ".$parameter2.">\r\n";


	/* Verschicken der Mail */
	if (mail($to, $subject, $message, $headers))			// send mail with headers
	{
		echo "eMail an ".$to." gesendet
";
	}
	else
	{
		echo "Senden der Nachricht an ".$to." fehlgeschlagen
";
	}
}

// -------------------------------------------------------------------------//
// ------------------------ TEXT MAIL SENDEN -------------------------------//
// -------------------------------------------------------------------------//
function mailschickentext($parameter0,$parameter1,$parameter2)
{
	
	$to = $parameter0;
	$subject = $parameter1;

	/* eMail-Informationen */
	$mail_title = "Rundmail";

	/* Nachricht */
	//$message = "Das ist eine Rundmail gesendet durch unsere Webseite
";
	$message = $parameter2;

	/* Verschicken der Mail */
	if (mail($to, $subject, $message))			// send mail without headers
	{
		echo "Nachricht erfolgreich mit folgenden Einträgen versendet:
";
		for ($i=0;$i<3;$i++)
		{
		echo "$i 
"; 
		}
	}
	else
	{
	echo "Senden der Nachricht fehlgeschlagen
";
	}
}
?>
 
Alt 22.12.2004, 00:58  
Gast
 
Beiträge: n/a
Standard

OK ich habs gefunden... ok was heisszt gefunden, ich habe einfach bei der Funktion, in der die eMail versndet wird die Fehlerausgabe unterdrückt, und so geht es jetzt.

Code:
if (@mail (.......))
jetzt läuft alles schneller und klappt auch in der angegebenen Zeit!!
 
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Abfrage ob email adresse schon vorhanden ist TeazY PHP Tipps 2008 10 16.12.2007 12:22
Newsletter email abfrage Problem mokus PHP Tipps 2006 7 18.04.2006 16:35
Email Header und Alternativer Text... PHP Tipps 2007 22 10.11.2005 16:38
Email über richtigen Mailserver schicken? PHP Tipps 2005-2 4 03.08.2005 16:34
[Erledigt] automatisch Email PHP Tipps 2005-2 3 26.07.2005 12:53
eMail wird manchmal gesendet PHP-Fortgeschrittene 7 17.07.2005 21:11
[Erledigt] doppelte email adressen suchen Datenbanken 9 20.05.2005 19:38
Email aus textarea PHP Tipps 2005 3 14.04.2005 21:37
Email oder SMS automatisch bzw. auf anfrage des Users absend Beitragsarchiv 10 29.12.2004 13:52
eMail kontrolle PHP Tipps 2004-2 1 20.12.2004 13:01
Wie implementiere ich mein Email Formular? PHP Tipps 2004-2 2 14.11.2004 17:02
Suche eMail Formular in PHP Beitragsarchiv 2 12.10.2004 16:24
email funktion des phpbb selbst benutzen PHP Tipps 2004 0 22.09.2004 13:18
Email zertifikation obi PHP Tipps 2004 2 15.08.2004 21:24
Email per PHP formatieren PHP Tipps 2004 4 26.07.2004 09:49

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
if email gesendet echo, php mail verzögern, newsletter aufeinmal senden oder verzögert, php email versenden verzögern, alle @mail, verzögerung bei massenmail versand, php formular verzögert mail versenden, email versand verzögert php, email zeitverzögert denden php, php mail versenden warte, mail verzögern php, mails werden verzöger gesendet, php mail versenden mit verzögerung, form versand verzögern, php email versand verzögern, php massenmail time_out, php massenmail schleife, html mailbomb script, php massen mail versenden

Alle Zeitangaben in WEZ +2. Es ist jetzt 23:57 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.