Problem beim versenden von emails mit emailer.php von phpbb

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Lord_Femto
Mitglied
Beiträge: 701
Registriert: 19.12.2003 15:53
Wohnort: Berlin

Problem beim versenden von emails mit emailer.php von phpbb

Beitrag von Lord_Femto »

vorweg tritt folgender fehler auf, wenn ich über ein kontakt-formular eine email versenden lassen will.
Warning: filesize() [function.filesize]: Stat failed for (errno=2 - No such file or directory) in /www/htdocs/inu/includes/emailer.php on line 98
tja. nun geht es um folgendes. die email wird versendet. jedoch wird das template irgendwie nicht angenommen. keine ahnung warum. am besten ich poste einmal hier alles wichtige:

funktion der emailer.php:

Code: Alles auswählen

function use_template($template_file)
	{
		global $boot_root_path;

		if (trim($template_file) == '')
		{
			message_die(GENERAL_ERROR, 'No template file set', '', __LINE__, __FILE__);
		}

		if (empty($this->tpl_msg[$template_file]))
		{
			$tpl_file = $boot_root_path . 'email/' . $template_file . '.tpl';
		
			if (!@file_exists(@phpbb_realpath($tpl_file)))
			{
				$tpl_file = $boot_root_path . 'email/' . $template_file . '.tpl';

				if (!@file_exists(@phpbb_realpath($tpl_file)))
				{
					message_die(GENERAL_ERROR, 'Could not find email template file :: ' . $template_file, '', __LINE__, __FILE__);
				}
			}

			if (!($fd = @fopen($tpl_file, 'r')))
			{
				message_die(GENERAL_ERROR, 'Failed opening template file :: ' . $tpl_file, '', __LINE__, __FILE__);
			}

			$this->tpl_msg[$template_file] = fread($fd, filesize($this->tpl_file));
			fclose($fd);
		}

		$this->msg = $this->tpl_msg[$template_file];

		return true;
	}
ausführung der funktionen in der jeweiligen datei. hier die contact.php:

Code: Alles auswählen

if ( !$error )
	{
		include($boot_root_path . 'includes/emailer.'.$phpEx);

		$emailer = new emailer(0);
	
		$emailer->from($page_config['page_email']);
		$emailer->replyto($page_config['page_email']);

		for ($i = 0; $i < count($bcc_list); $i++)
		{
			$emailer->bcc($bcc_list[$i]);
		}

		$email_headers = 'X-AntiAbuse: Board servername - ' . $page_config['server_name'] . "\n";
	
		$emailer->use_template('contact_email');
		$emailer->email_address($page_config['page_email']);
		$emailer->set_subject($subject);
		$emailer->extra_headers($email_headers);

		$emailer->assign_vars(array(
			'SITENAME' => $page_config['page_name'], 
			'BOARD_EMAIL' => $page_config['page_email'],
			'L_NAME' => $name,
			'L_EMAIL' => $email,
			'L_CONTENT' => $content)
		);
		
		$emailer->send();
		$emailer->reset();

		message_die(GENERAL_MESSAGE, 'E-Mail wurde gesendet<br /><br />' . sprintf('Hier klicken, um zurück zu kehren',  '<a href="index.'.$phpEx.'?show=contact">', '</a>'));
	}
}	

if ( $error )
{
	message_die(GENERAL_MESSAGE, $error_msg);
}
und der code der template datei, die im pfad root/email/contact_email.tpl vorliegt:

Code: Alles auswählen

Charset: iso-8859-1

{SITENAME}
{BOARD_EMAIL}

Die Nachricht :
~~~~~~~~~~~~~~~

Name: {L_NAME}
E-Mail: {L_EMAIL}

Nachricht: {L_CONTENT}
beim empfangen der email sehe ich zwar email adresse und subject aber nicht den email inhalt.

auffällig ist, dass in der fehlermeldung nach Stat failed for der pfad der template datei nicht angezeigt wird.

bitte um hilfe. der fehler ist bestimmt banal aber ich finde ihn nicht.

HINWEIS: Wie man sieht lehnt sich diese ganze Code-Geschichte an phpbb an.
Gruß Lord_Femto
visit - http://www.pandemicbrew.de
Project X
Benutzeravatar
Blutgerinsel
Mitglied
Beiträge: 1801
Registriert: 19.07.2004 18:53
Wohnort: Landkreis Ulm
Kontaktdaten:

Beitrag von Blutgerinsel »

Dann würde ich mal prüfen ob

der Pfad zum Template in
/www/htdocs/inu/includes/emailer.php

richtig ist zu
root/email/contact_email.tpl

Was bei dir nun der root Pfad ist und was in der globalen
$boot_root_path steht ist unbekannt bzw. nicht ersichtlich....

auch
No such file or directory
bemängelt bereits den Fehler unmißverständlich.....

man könnte sogar auf die Idee kommen in der Klasse/Methode den Pfad auszugeben und alle 3 Dirs mit einander zu vergleichen.......

Naja....
Lord_Femto
Mitglied
Beiträge: 701
Registriert: 19.12.2003 15:53
Wohnort: Berlin

Beitrag von Lord_Femto »

Code: Alles auswählen

$boot_root_path = './';
$tpl_file wird irgendwie gar nicht ausgegeben.

kann es eine ursache haben, dass ich eine index.php benutze, wo der ganze inhalt etc. mittels switch-abfrage included wird?
Gruß Lord_Femto
visit - http://www.pandemicbrew.de
Project X
Benutzeravatar
Blutgerinsel
Mitglied
Beiträge: 1801
Registriert: 19.07.2004 18:53
Wohnort: Landkreis Ulm
Kontaktdaten:

Beitrag von Blutgerinsel »

Was ist bei dir $_SERVER['DOCUMENT_ROOT']

/www/htdocs/ ?

wenn ja dann befindet sich die emailer.php 2 Verzeichnisebenen unter dem Rootdir.....

weil /inu/includes/

d.h. du müsstest um ins root zu kommen 2 Ebenen höher....
was durch ../../ erreicht wird.....

Oder du setzt einen absoluten Pfad abgehend vom Rootdir via $_SERVER['DOCUMENT_ROOT'].......
Lord_Femto
Mitglied
Beiträge: 701
Registriert: 19.12.2003 15:53
Wohnort: Berlin

Beitrag von Lord_Femto »

du hast recht. $_SERVER['DOCUMENT_ROOT'] ist bei mir irgendwas mit /www/htdocs/irgendeine_nummer...

aber warum muss ich, um ins root zu kommen, zwei ebenen höher. dann frage ich mich, warum das bei phpbb geht und bei mir nicht? habe ich irgendetwas übersehen?

wo muss ich ../../ hinzufügen?
Gruß Lord_Femto
visit - http://www.pandemicbrew.de
Project X
Benutzeravatar
Blutgerinsel
Mitglied
Beiträge: 1801
Registriert: 19.07.2004 18:53
Wohnort: Landkreis Ulm
Kontaktdaten:

Beitrag von Blutgerinsel »

dort wo du das Template öffnest bzw. übergibst das befindet sich ja 2 Ebenen höher....

Denke

../../email/contact_email.tpl

Weitere Möglichkeit wäre
$_SERVER['DOCUMENT_ROOT'].'email/contact_email';

Mach dir klar das Script X1 befindet sich in Dir X2 relativ davon müssen Files die in Y liegen dann realtiv entsprechend angegeben werden
Lord_Femto
Mitglied
Beiträge: 701
Registriert: 19.12.2003 15:53
Wohnort: Berlin

Beitrag von Lord_Femto »

ok, ok. soweit so gut.

aber eine frae. ich verstehe nicht, warum es dann bei phpbb funktioniert.

bei mir ist es so. www/htdocs/123456/

contact.php
includes/emailer.php
email/contact_email.tpl

äquivalent verhält es sich aber doch auch bei phpbb.

z.b.

privmsg.php
includes/emailer.php
languages/email/contact_email.tpl

aber warum funktioniert es bei mir nicht genauso?!?
Gruß Lord_Femto
visit - http://www.pandemicbrew.de
Project X
Benutzeravatar
Blutgerinsel
Mitglied
Beiträge: 1801
Registriert: 19.07.2004 18:53
Wohnort: Landkreis Ulm
Kontaktdaten:

Beitrag von Blutgerinsel »

Lord_Femto hat geschrieben:ok, ok. soweit so gut.
Das heisst es geht jetzt ?

Bei PHPBB gibt es eine Variable $php_root_path oder so ähnlich in dieser steht gerade der relative Vorteil......

Wenn ich in Path X bin muss ja schließlich das Script wissen wo ist das was ich öffnen oder einbinden soll wenn es nicht im gleichen Path liegt............
Lord_Femto
Mitglied
Beiträge: 701
Registriert: 19.12.2003 15:53
Wohnort: Berlin

Beitrag von Lord_Femto »

aber dafür habe ich doch $boo_root_path , oder?

nein funktioniert noch nicht.
Gruß Lord_Femto
visit - http://www.pandemicbrew.de
Project X
Benutzeravatar
Pyramide
Ehrenadmin
Beiträge: 12734
Registriert: 19.04.2001 02:00
Wohnort: Meschede

Beitrag von Pyramide »

Blutgerinsel hat geschrieben:Bei PHPBB gibt es eine Variable $php_root_path oder so ähnlich
Lord_Femto hat geschrieben:aber dafür habe ich doch $boo_root_path , oder?
Die Variable muss $phpbb_root_path heißen - selbstbenannte Variablen prüft phpBB nicht, nur weil sie mit root_path enden :roll:
Antworten

Zurück zu „Coding & Technik“