phpbar.de logo

Mailinglisten-Archive

[php] Probleme mit mail() und popen(..sendmail..)

[php] Probleme mit mail() und popen(..sendmail..)

Uwe Renner urenner_(at)_r-plex.com
Thu, 17 Jun 1999 22:40:06 +0200


Hallo!

Vor einiger Zeit gab es schon einmal einen Thread zu Problemen mit Mail-
Verschickerei unter PHP, damals kam der für mich schon wirklich 
weiterbringende Tip mit folgender Programm-Lösung:

#---------------------------------------
function Mail_It($LocationOfSendmail, $ToAddress, $FromAddress, 
$AdditionalHeaders, $Subject, $MailText) {

# Stand: 17.6.99
# verschickt die Mail über eine Process-Pipe an Sendmail.
#
# Rückgabe: wohl immer 1...
# Leider gibt nämlich popen() IMMER einen $fp zurück, auch wenn es das
# Programm unter dem angegebenen Pfad garnicht gibt...

	if (($fp = popen($LocationOfSendmail . " -t -f\"" 
	  . $FromAddress . "\"" ,"w"))!=0) {
		$out =	"From: " . $FromAddress . "\n";
		$out .=	"To: " . $ToAddress ."\n";
		$out .=	 "Subject: " . $Subject . "\n";
		if ($AdditionalHeaders != "") {
			$out .=	 $AdditionalHeaders ."\n";
		}
		$out .=	 "\n";
		$out .=	 $MailText ."\n";
		fputs($fp,$out);
		pclose($fp);
		return 1;
	}
	else {
		return 0;
	}
}
#---------------------------------------


Nun habe ich 2 Probleme:
1.) wenn auf meinem Internet-Server das Sendmail eben mal nicht tut, dann 
liefert popen() trotzdem nicht false, z.B. wenn der Pfad zu sendmail völlig 
falsch ist. Die Mail landet im Nirvana, keiner weiß davon. Weiß jemand eine 
Lösung, wie man zumindest das korrekte Piping an sendmail kontrollieren 
kann?

2.) Mit einer lösung via mail()-Aufruf war ich aus zwei Günden nicht glücklich 
geworden:
- mail() kehrte auf dem Server meines Internet-Providers erst extrem spät 
zurück, teilweise fast 1 Minute Wartezeit! Dabei wurde die Mail eigentlich 
wohl recht schnell verschickt, denn selbst wenn man die Sanduhr der 
Bestätigungs-Seite (hing wegen mail()..) relativ schnell abbrach, war die Mail 
draußen! Der Provider fährt fast diesselbe Konfig. wie ich hier (Linux 2.0.x, 
Apache 1.3.x, PHP 3.07, sendmail 8.8.x) bei mir läufts prima!
- mit mail() verschickte Mails tragen als Absender 
"nobody_(at)_mein.rechner.domain.com" oder sowas, irgendwo beim Transport 
im Internet hat dann meistens ein Sendmail wohl die MX-Einträge des 
Absenders gecheckt, mein Rechner hier hat natürlich keinen, die Mails 
verschwanden. Mit sendmail() kann ich immerhin den Absneder auch im 
Envelope modifizieren (über den -f-Switch, s.o.). 
Frage: habe ich die Problematik richtig gedeutet?
___________________________________________________
Uwe Renner <urenner_(at)_r-plex.com>
r-plex GmbH, http://www.r-plex.com
Danziger Str. 14
71093 Weil im Schönbuch
Tel. 07157-520820
Fax  07157-520821
Amtsgericht Böblingen, HRB 4599


php::bar PHP Wiki   -   Listenarchive