[TYPO3-german] Direct-Mail: Rückläufer auswerten

Philipp Holdener philipp at holdener.ch
Mon Feb 2 07:30:03 CET 2009


> 
> Kannst Du uns das Ding mal senden, dann können wir uns das genauer
> anschauen und evtl in die distribution rein geben als alternatives script.

Hallo Oliver

Das ist die angepasste Version die bei mir läuft

Gruss
Philipp



#!/usr/bin/php -q

<?php
/***************************************************************
*  Copyright notice
*
*  (c) 1999-2004 Kasper Skaarhoj (kasperYYYY at typo3.com)
*  (c) 2004-2006 Stanislas Rolland <stanislas.rolland(arobas)fructifor.ca>
*  All rights reserved
*
*  This script is part of the TYPO3 project. The TYPO3 project is
*  free software; you can redistribute it and/or modify
*  it under the terms of the GNU General Public License as published by
*  the Free Software Foundation; either version 2 of the License, or
*  (at your option) any later version.
*
*  The GNU General Public License can be found at
*  http://www.gnu.org/copyleft/gpl.html.
*  A copy is found in the textfile GPL.txt and important notices to the 
license
*  from the author is found in LICENSE.txt distributed with these scripts.
*
*
*  This script is distributed in the hope that it will be useful,
*  but WITHOUT ANY WARRANTY; without even the implied warranty of
*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
*  GNU General Public License for more details.
*
*  This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/
/**
  * Cron tack for return mails analysis
  *
  * @author	Kasper Skaarhoj <kasperYYYY at typo3.com>
  * @author	Stanislas Rolland <stanislas.rolland(arobas)fructifor.ca>
  *
  * $Id: returnmail.phpsh 6012 2007-07-23 12:54:25Z ivankartolo $
  *
  */

error_reporting (E_ALL ^ E_NOTICE);

/* Trey - beginnen

define('TYPO3_cliMode', TRUE);
define("PATH_thisScript", $_ENV['_'] ? $_ENV['_'] : $_SERVER['_']);

Trey - ende */

if ($_SERVER['PHP_SELF']) {
	if (!defined('PATH_thisScript')) 
define('PATH_thisScript',str_replace('//','/', str_replace('\\','/', 
$_SERVER['PHP_SELF'])));
} else {
	if (!defined('PATH_thisScript')) 
define('PATH_thisScript',str_replace('//','/', str_replace('\\','/', 
$_ENV['_'])));
}

/**
* Aenderung Mittwald
*/
//if (!defined('PATH_site')) define('PATH_site', 
dirname(dirname(dirname(dirname(dirname(dirname(PATH_thisScript)))))).'/');
//if (!defined('PATH_t3lib')) if (!defined('PATH_t3lib')) 
define('PATH_t3lib', PATH_site.'t3lib/');
define("PATH_site","/html/");
define("PATH_t3lib","/home/www/p105269/typo3_src/t3lib/");
/* Ende */

define('PATH_typo3conf', PATH_site.'typo3conf/');
define('TYPO3_mainDir', 'typo3/');
if (!defined('PATH_typo3')) define('PATH_typo3', PATH_site.TYPO3_mainDir);
if (!defined('PATH_tslib')) {
	if (@is_dir(PATH_site.'typo3/sysext/cms/tslib/')) {
		define('PATH_tslib', PATH_site.'typo3/sysext/cms/tslib/');
	} elseif (@is_dir(PATH_site.'tslib/')) {
		define('PATH_tslib', PATH_site.'tslib/');
	}
}
define('TYPO3_OS', 
stristr(PHP_OS,'win')&&!stristr(PHP_OS,'darwin')?'WIN':'');
define('TYPO3_MODE', 'BE');
	
require_once(PATH_t3lib.'class.t3lib_div.php');
require_once(PATH_t3lib.'class.t3lib_extmgm.php');
require_once(PATH_t3lib.'config_default.php');
require_once(PATH_typo3conf.'localconf.php');
	
if (!defined ('TYPO3_db'))  die ('The configuration file was not 
included.');
if (isset($_POST['GLOBALS']) || isset($_GET['GLOBALS']))      die('You 
cannot set the GLOBALS-array from outside this script.');
	
	// Connect to the database
require_once(PATH_t3lib.'class.t3lib_db.php');
$TYPO3_DB = t3lib_div::makeInstance('t3lib_DB');
$result = $TYPO3_DB->sql_pconnect(TYPO3_db_host, TYPO3_db_username, 
TYPO3_db_password);
if (!$result)	{
	die("Couldn't connect to database at ".TYPO3_db_host);
}
$TYPO3_DB->sql_select_db(TYPO3_db);
require_once(t3lib_extMgm::extPath('direct_mail').'res/scripts/class.readmail.php');

// MAIL CONTENT
$filename = 'php://stdin';

$content = t3lib_div::getUrl($filename);
if (trim($content))	{
	$readMail = t3lib_div::makeInstance('readmail');
	
		// Split mail into head and content
	$mailParts = $readMail->extractMailHeader($content);
		// Find id
	$midArr = $readMail->find_XTypo3MID($content);
	if (!is_array($midArr))	{
		$midArr = $readMail->find_MIDfromReturnPath($mailParts['to']);
	}
	
		// Extract text content
	$c = trim($readMail->getMessage($mailParts));
	$cp = $readMail->analyseReturnError($c);
	
	$res = $TYPO3_DB->exec_SELECTquery('uid,email', 'sys_dmail_maillog', 
'rid='.intval($midArr['rid']).' AND 
rtbl="'.$TYPO3_DB->quoteStr($midArr['rtbl'], 'sys_dmail_maillog').'" AND 
mid='.intval($midArr['mid']).' AND response_type=0');
	if (!$TYPO3_DB->sql_num_rows($res)) {
		$midArr = array();
		$cp = $mailParts;
	} else {
		$row = $TYPO3_DB->sql_fetch_assoc($res);
		$midArr['email'] = $row['email'];
	}
	
	$insertFields = array(
		'tstamp' => time(),
		'response_type' => -127,
		'mid' => intval($midArr['mid']),
		'rid' => intval($midArr['rid']),
		'email' => $midArr['email'],
		'rtbl' => $midArr['rtbl'],
		'return_content' => serialize($cp),
		'return_code' => intval($cp['reason'])
	);
	$TYPO3_DB->exec_INSERTquery('sys_dmail_maillog', $insertFields);
}
?>


More information about the TYPO3-german mailing list