<?php require_once dirname(__FILE__) . '/accesscheck.php'; ######################################################################## # Reads mail from a test account that will recieve all sent mail. # Use developer_email to send all mail to one account. # Use test_email settings to pop this box. # This file shows the links from the first email foun d for a selected user. # The links can be use to for instance confirm the user in an automated test. # # 2007 Bas Ovink - tincan ltd ######################################################################## //CREATE TABLE `dev-phplist`.`phplist_testemail` ( //`id` int( 11 ) NOT NULL AUTO_INCREMENT , //`date` datetime default NULL , //`header` text, //`data` blob, //`status` varchar( 255 ) default NULL , //`comment` text, //PRIMARY KEY ( `id` ) , //KEY `dateindex` ( `date` ) //) ENGINE = MYISAM DEFAULT CHARSET = latin1 AUTO_INCREMENT =34; if (!$GLOBALS["commandline"]) { ob_end_flush(); if (!MANUALLY_PROCESS_testS) { print $GLOBALS['I18N']->get("This page can only be called from the commandline"); return; } } else { ob_end_clean(); print ClineSignature(); ob_start(); } function prepareOutput() { global $outputdone; if (!$outputdone) { $outputdone= 1; return formStart('name="outputform" class="readtestmailOutput" ') . '<textarea name="output" rows=10 cols=70></textarea></form>'; } } $report= ""; ## some general functions function finish($flag, $message) { if ($flag == "error") { $subject= $GLOBALS['I18N']->get("test processing error"); } elseif ($flag == "info") { $subject= $GLOBALS['I18N']->get("test Processing info"); } if (!TEST && $message) sendReport($subject, $message); # try..catch global $link; imap_close($link); } function ProcessError($message) { output("$message"); finish('error', $message); exit; } function processTestEmails_shutdown() { global $report, $process_id; releaseLock($process_id); # $report .= "Connection status:".connection_status(); finish('info', $report); if (!$GLOBALS["commandline"]) { include_once dirname(__FILE__) . '/footer.inc'; } } function output($message, $reset= 0) { $infostring= "[" . date("D j M Y H:i", time()) . "] [" . getenv("REMOTE_HOST") . "] [" . getenv("REMOTE_ADDR") . "]"; #print "$infostring $message<br/>\n"; $message= preg_replace("/\n/", '', $message); ## contribution from http://forums.phplist.com/viewtopic.php?p=14648 ## in languages with accented characters replace the HTML back //Replace the "’" which is not replaced by html_decode $message= preg_replace("/’/", "'", $message); //Decode HTML chars #$message = html_entity_decode($message,ENT_QUOTES,$_SESSION['adminlanguage']['charset']); $message= html_entity_decode($message, ENT_QUOTES, 'UTF-8'); if ($GLOBALS["commandline"]) { ob_end_clean(); print strip_tags($message) . "\n"; ob_start(); } else { if ($reset) print '<script language="Javascript" type="text/javascript"> // if (document.forms[0].name == "outputform") { document.outputform.output.value = ""; document.outputform.output.value += "\n"; // } </script>' . "\n"; print '<script language="Javascript" type="text/javascript"> // if (document.forms[0].name == "outputform") { document.outputform.output.value += "' . $message . '"; document.outputform.output.value += "\n"; // } else // document.writeln("' . $message . '"); </script>' . "\n"; } flush(); } //function processTestEmail($link, $mailIndex, $header) { // global $tables; // $headerinfo= imap_headerinfo($link, $mailIndex); // $header= imap_fetchheader($link, $mailIndex); // // $body= imap_body($link, $mailIndex); // $msgid= 0; // $user= 0; // preg_match("/X-MessageId: (.*)/i", $header, $match); // if (is_array($match) && isset ($match[1])) // $msgid= trim($match[1]); // if (!$msgid) { // # older versions use X-Message // preg_match("/X-Message: (.*)/i", $header, $match); // if (is_array($match) && isset ($match[1])) // $msgid= trim($match[1]); // } // // preg_match("/X-ListMember: (.*)/i", $header, $match); // if (is_array($match) && isset ($match[1])) // $user= trim($match[1]); // if (!$user) { // # older version use X-User // preg_match("/X-User: (.*)/i", $header, $match); // if (is_array($match) && isset ($match[1])) // $user= trim($match[1]); // } // # some versions used the email to identify the users, some the userid and others the uniqid // # use backward compatible way to find user // if (preg_match("/.*@.*/i", $user, $match)) { // $userid_req= Sql_Fetch_Row_Query("select id from {$tables["user"]} where email = \"$user\""); // if (VERBOSE) // output("UID" . // $userid_req[0] . " MSGID" . $msgid); // $userid= $userid_req[0]; // } // elseif (preg_match("/^\d$/", $user)) { // $userid= $user; // if (VERBOSE) // output("UID" . $userid . " MSGID" . $msgid); // } // elseif ($user) { // $userid_req= Sql_Fetch_Row_Query("select id from {$tables["user"]} where uniqid = \"$user\""); // if (VERBOSE) // output("UID" . $userid_req[0] . " MSGID" . $msgid); // $userid= $userid_req[0]; // } else { // $userid= ''; // } // // Sql_Query(sprintf('insert into %s (date,header,data) // // values("%s","%s","%s")', 'phplist_testemail', date("Y-m-d H:i", @ strtotime($headerinfo->date)), addslashes($header), addslashes($body))); // // $testid= Sql_Insert_id(); // // if ($userid) { // // Sql_Query(sprintf('update %s // // set status = "test system message", // // comment = "userid %s" // // where id = %d', 'phplist_testemail', $userid, $testid)); // // } else { // // Sql_Query(sprintf('update %s // // set status = "unidentified test", // // comment = "not processed" // // where id = %d', 'phplist_testemail', $testid)); // // return false; // // } // dbg($userid, '$userid'); // return true; //} function openPop($server, $user, $password) { $port= $GLOBALS["test_mailbox_port"]; if (!$port) { $port= '110/pop3/notls'; } set_time_limit(6000); if (!TEST) { $link= imap_open("{" . $server . ":" . $port . "}INBOX", $user, $password, CL_EXPUNGE); } else { $link= imap_open("{" . $server . ":" . $port . "}INBOX", $user, $password); } if (!$link) { output($GLOBALS['I18N']->get("Cannot create POP3 connection to") . " $server: " . imap_last_error()); return null; } return $link; } function openMbox($file) { set_time_limit(6000); if (!TEST) { $link= imap_open($file, "", "", CL_EXPUNGE); } else { $link= imap_open($file, "", ""); } if (!$link) { output($GLOBALS['I18N']->get("Cannot open mailbox file") . " " . imap_last_error()); return null; } return $link; } function findEmailForUser($link, $mailToFind, $max= 3000) { global $test_mailbox_purge_unprocessed, $test_mailbox_purge; output(sprintf('Looking for emails to %s', $mailToFind)); $num= imap_num_msg($link); output($num . " " . $GLOBALS['I18N']->get("mails in mailbox") . "\n"); output($GLOBALS['I18N']->get("Please do not interrupt this process") . "\n"); if ($num > $max) { print $GLOBALS['I18N']->get("Processing first") . " $max " . $GLOBALS['I18N']->get("tests") . "<br/>"; $num= $max; } $nberror= 0; $found= false; $mailIndex= 0; while (!$found && $mailIndex++ <= $num) { //for ($x= 1; $x <= $num; $x++) set_time_limit(60); $header= imap_fetchheader($link, $mailIndex); preg_match("/X-ListMember: (.*)/i", $header, $match); if (is_array($match) && isset ($match[1]) ) { $match[1] = trim($match[1]); $found= $mailToFind == $match[1]; if (!$found) { printf('<a href="?page=readtestmail&email=%s">Get (& delete) %s</a><br />', $match[1], $match[1]); } } if ($found) { output('Message found'); if (!TEST && $test_mailbox_purge) { output($GLOBALS['I18N']->get("Deleting message") . " $mailIndex"); imap_delete($link, $mailIndex); } } else { if (!TEST && $test_mailbox_purge_unprocessed) { output($GLOBALS['I18N']->get("Deleting message") . " $mailIndex"); imap_delete($link, $mailIndex); } } flush(); } flush(); output($GLOBALS['I18N']->get("Closing mailbox, and purging messages")); if ($found) { return $num; } else { return null; } } ############################################# # main function main() { }; if (!function_exists('imap_open')) { Error($GLOBALS['I18N']->get('IMAP is not included in your PHP installation, cannot continue') . '<br/>' . $GLOBALS['I18N']->get('Check out') . ' <a href="http://www.php.net/manual/en/ref.imap.php">http://www.php.net/manual/en/ref.imap.php</a>'); return; } //print '<script language="Javascript" src="js/progressbar.js" type="text/javascript"></script>'; flush(); $outputdone= 0; # lets not do this unless we do some locking first register_shutdown_function('processTestEmails_shutdown'); $abort= ignore_user_abort(1); $process_id= getPageLock(); if (!empty ($_REQUEST['email'])) { $mailToFind= $_REQUEST['email']; print prepareOutput(); switch ($test_protocol) { case "pop" : $link= openPop($test_mailbox_host, $test_mailbox_user, $test_mailbox_password); break; case "mbox" : $link= openMbox($test_mailbox); break; default : Error($GLOBALS['I18N']->get("test_protocol not supported")); return; } if (isset ($link)) { $mailIndex= findEmailForUser($link, $mailToFind); if ( !is_null($mailIndex) ) { $body= imap_body($link, $mailIndex); $overview= imap_fetch_overview($link, $mailIndex); printf('Subject: %s<br />', $overview[0]->subject); preg_match_all("/<a(.*)href=[\"\'](.*)[\"\']([^>]*)>/Umis", $body, $links); foreach ($links[0] as $matchindex => $fullmatch) { preg_match('/p=(\w+)/', $fullmatch, $linkPages); printf('<a href="%s" id=%s>Link %s: %s</a><br />', $fullmatch, $matchindex++, $matchindex, $linkPages[1]); } preg_match_all('/http:\/\/\S+/', $body, $links); foreach ($links[0] as $matchindex => $fullmatch) { preg_match('/p=(\w+)/', $fullmatch, $linkPages); printf('<a href="%s" id=%s>Link %s: %s</a><br />', $fullmatch, $matchindex++, $matchindex, $linkPages[1]); } } } } { print ('<form method="get">'); print (' <input name="page" value="readtestmail" type="hidden" />'); print (' <input class="submit" type="submit" name="action" value="Get email for user: " />'); printf(' <input type="text" name="email" value="%s" />', $_REQUEST['email']); print ('</form>'); } if (!$GLOBALS["commandline"]) { print '<script language="Javascript" type="text/javascript"> finish(); </script>'; } ?>
Name | Type | Size | Permission | Actions |
---|---|---|---|---|
FCKeditor | Folder | 0755 |
|
|
PEAR | Folder | 0755 |
|
|
PHPMailer | Folder | 0755 |
|
|
PHPMailer6 | Folder | 0755 |
|
|
actions | Folder | 0755 |
|
|
auth | Folder | 0755 |
|
|
commonlib | Folder | 0755 |
|
|
css | Folder | 0755 |
|
|
data | Folder | 0755 |
|
|
help | Folder | 0755 |
|
|
images | Folder | 0755 |
|
|
inc | Folder | 0755 |
|
|
info | Folder | 0755 |
|
|
js | Folder | 0755 |
|
|
lan | Folder | 0755 |
|
|
locale | Folder | 0755 |
|
|
oldmailer | Folder | 0755 |
|
|
onyxrss | Folder | 0755 |
|
|
plugins | Folder | 0755 |
|
|
styles | Folder | 0755 |
|
|
tests | Folder | 0755 |
|
|
ui | Folder | 0755 |
|
|
uploadimages | Folder | 0755 |
|
|
.gitignore | File | 20 B | 0644 |
|
.htaccess | File | 171 B | 0644 |
|
.minceconf | File | 994 B | 0644 |
|
AnalyticsQuery.php | File | 985 B | 0644 |
|
CsvReader.php | File | 1.27 KB | 0644 |
|
EmailSender.php | File | 477 B | 0644 |
|
about.php | File | 4.22 KB | 0644 |
|
accesscheck.php | File | 1.51 KB | 0644 |
|
addprefix.php | File | 966 B | 0644 |
|
adduser.php | File | 46 B | 0644 |
|
admin.php | File | 10.68 KB | 0644 |
|
adminattributes.php | File | 6.39 KB | 0644 |
|
admins.php | File | 4.54 KB | 0644 |
|
adodb.inc | File | 6.49 KB | 0644 |
|
analytics.php | File | 2.84 KB | 0644 |
|
attributes.php | File | 102 B | 0644 |
|
blacklistemail.php | File | 1.04 KB | 0644 |
|
bounce.php | File | 10.09 KB | 0644 |
|
bouncemgt.php | File | 1.39 KB | 0644 |
|
bouncerule.php | File | 3 KB | 0644 |
|
bouncerules.php | File | 5.86 KB | 0644 |
|
bounces.php | File | 6.01 KB | 0644 |
|
catlists.php | File | 2.64 KB | 0644 |
|
checkbouncerules.php | File | 1.34 KB | 0644 |
|
checki18n.php | File | 2.69 KB | 0644 |
|
checkprerequisites.php | File | 1.05 KB | 0644 |
|
class.html.mime.mail-outlookfix.inc | File | 19.93 KB | 0644 |
|
class.html.mime.mail.inc | File | 19.35 KB | 0644 |
|
class.image.inc | File | 5.77 KB | 0644 |
|
class.phplistmailer.php | File | 24.23 KB | 0644 |
|
class.phplistmailerbase.php | File | 1.5 KB | 0644 |
|
community.php | File | 1.78 KB | 0644 |
|
communityfeed.php | File | 2.36 KB | 0644 |
|
configure.php | File | 5.25 KB | 0644 |
|
connect.php | File | 74.36 KB | 0644 |
|
convertstats.php | File | 5.51 KB | 0644 |
|
converttoutf8.php | File | 3.77 KB | 0644 |
|
cron.php | File | 3.37 KB | 0644 |
|
date.php | File | 6.08 KB | 0644 |
|
dbcheck.php | File | 111 B | 0644 |
|
defaultFrontendTexts.php | File | 9.57 KB | 0644 |
|
defaultconfig.inc | File | 23.52 KB | 0644 |
|
defaultconfig.php | File | 24.92 KB | 0644 |
|
defaultplugin.php | File | 23.31 KB | 0644 |
|
defaults.php | File | 2.83 KB | 0644 |
|
defaultsystemtemplate.php | File | 1.83 KB | 0644 |
|
defaulttest.php | File | 1.12 KB | 0644 |
|
dlusers.php | File | 232 B | 0644 |
|
domainbounces.php | File | 507 B | 0644 |
|
domainstats.php | File | 2.83 KB | 0644 |
|
editattributes.php | File | 6.7 KB | 0644 |
|
editlist.php | File | 6.79 KB | 0644 |
|
error_log | File | 274 B | 0644 |
|
eventlog.php | File | 4.49 KB | 0644 |
|
export.php | File | 4.84 KB | 0644 |
|
exportuserdata.php | File | 6.36 KB | 0644 |
|
fckphplist.php | File | 43.21 KB | 0644 |
|
footer.inc | File | 1.19 KB | 0644 |
|
footer.old.inc | File | 1.82 KB | 0644 |
|
gchart.php | File | 869 B | 0644 |
|
generatebouncerules.php | File | 5.24 KB | 0644 |
|
getrss.php | File | 3.94 KB | 0644 |
|
header.inc | File | 1.75 KB | 0644 |
|
home.php | File | 16.36 KB | 0644 |
|
hostedprocessqueuesetup.php | File | 1.64 KB | 0644 |
|
htaccess | File | 311 B | 0644 |
|
image.php | File | 795 B | 0644 |
|
import.php | File | 2.54 KB | 0644 |
|
import1.php | File | 9.41 KB | 0644 |
|
import2.php | File | 243 B | 0644 |
|
import3.php | File | 20.26 KB | 0644 |
|
import4.php | File | 15.63 KB | 0644 |
|
importadmin.php | File | 14.5 KB | 0644 |
|
importlib.php | File | 2.86 KB | 0644 |
|
importsimple.php | File | 5.84 KB | 0644 |
|
index.php | File | 22.53 KB | 0644 |
|
index.php.old | File | 22.53 KB | 0644 |
|
info.php | File | 1.01 KB | 0644 |
|
init.php | File | 21.7 KB | 0644 |
|
initialise.php | File | 10.02 KB | 0644 |
|
initlanguages.php | File | 794 B | 0644 |
|
languages.php | File | 22.43 KB | 0644 |
|
lib.php | File | 59.85 KB | 0644 |
|
list.php | File | 11.79 KB | 0644 |
|
listbounces.php | File | 4.64 KB | 0644 |
|
login.php | File | 6.05 KB | 0755 |
|
logout.php | File | 224 B | 0644 |
|
massremove.php | File | 1.81 KB | 0644 |
|
massunconfirm.php | File | 1.52 KB | 0644 |
|
mclicks.php | File | 9.55 KB | 0644 |
|
members.php | File | 16.58 KB | 0644 |
|
mergeduplicates.php | File | 4.28 KB | 0644 |
|
message.php | File | 7.27 KB | 0644 |
|
messages.php | File | 18.94 KB | 0644 |
|
mimePart.php | File | 10.7 KB | 0644 |
|
minify.txt | File | 201 B | 0644 |
|
msgbounces.php | File | 3.79 KB | 0644 |
|
msgstatus.php | File | 1.18 KB | 0644 |
|
mviews.php | File | 7.88 KB | 0644 |
|
mysql.inc | File | 11.19 KB | 0644 |
|
mysqli.inc | File | 11.58 KB | 0644 |
|
pageaction.php | File | 1.08 KB | 0644 |
|
pagetop.php | File | 1.17 KB | 0644 |
|
phpListAdminAuthentication.php | File | 7.2 KB | 0644 |
|
pluginlib.php | File | 6.39 KB | 0644 |
|
plugins.php | File | 10.32 KB | 0644 |
|
preparesend.php | File | 627 B | 0644 |
|
processbounces.php | File | 29.71 KB | 0644 |
|
processqueue.php | File | 3.73 KB | 0644 |
|
purgerss.php | File | 1.38 KB | 0644 |
|
readtestmail.php | File | 11.26 KB | 0644 |
|
reconcileusers.php | File | 25.16 KB | 0644 |
|
redirecttoupdater.php | File | 170 B | 0644 |
|
reindex.php | File | 1.69 KB | 0644 |
|
rsslib.php | File | 2.8 KB | 0644 |
|
runcommand.php | File | 583 B | 0644 |
|
send.php | File | 5.58 KB | 0644 |
|
send_core.php | File | 56.08 KB | 0644 |
|
sendemaillib.php | File | 64.2 KB | 0644 |
|
sendprepared.php | File | 4.33 KB | 0644 |
|
sessionlib.php | File | 2.92 KB | 0644 |
|
setpermissions.php | File | 1.57 KB | 0644 |
|
setup.php | File | 3.21 KB | 0644 |
|
sidebar.php | File | 2.67 KB | 0644 |
|
spage.php | File | 3.29 KB | 0644 |
|
spageedit.php | File | 17.07 KB | 0644 |
|
statsmgt.php | File | 1.22 KB | 0644 |
|
statsoverview.php | File | 7.62 KB | 0644 |
|
stresstest.php | File | 5.1 KB | 0644 |
|
structure.php | File | 26.79 KB | 0644 |
|
subscribelib2.php | File | 66.02 KB | 0644 |
|
subscriberstats.php | File | 591 B | 0644 |
|
suppressionlist.php | File | 1.71 KB | 0644 |
|
system.php | File | 784 B | 0644 |
|
systemstats.php | File | 7.71 KB | 0644 |
|
template.php | File | 12.72 KB | 0644 |
|
templates.php | File | 3.02 KB | 0644 |
|
tests.php | File | 1.57 KB | 0644 |
|
uclicks.php | File | 6.52 KB | 0644 |
|
update.php | File | 187 B | 0644 |
|
updateLib.php | File | 2.77 KB | 0644 |
|
updatetlds.php | File | 399 B | 0644 |
|
updatetranslation.php | File | 1.94 KB | 0644 |
|
upgrade.php | File | 29.03 KB | 0644 |
|
user.php | File | 2.35 KB | 0644 |
|
usercheck.php | File | 2.27 KB | 0644 |
|
userclicks.php | File | 8 KB | 0644 |
|
userhistory.php | File | 127 B | 0644 |
|
usermgt.php | File | 1.83 KB | 0644 |
|
users.php | File | 393 B | 0644 |
|
vCard.php | File | 1.9 KB | 0644 |
|
viewmessage.php | File | 610 B | 0644 |
|
viewrss.php | File | 4.07 KB | 0644 |
|
viewtemplate.php | File | 1.82 KB | 0644 |
|
vote.php | File | 38 B | 0644 |
|