📄 email.class.inc.php
字号:
<?php
/**
* GentleSource Temporary E-mail - email.class.inc.php
*
* (C) Ralf Stadtaus http://www.gentlesource.com/
*/
require_once 'database.class.inc.php';
require 'content.class.inc.php';
/**
* Manage e-mails
*
*/
class t12l_email extends t12l_content
{
/**
* Number of characters in excerpt
*/
var $excerpt_length = 200;
var $delete_emails = true;
var $maxlength = 20;
var $runs = 10;
var $runtime = 300;
var $detail_template = 'email.tpl.html';
/**
* Lifetime of an email address in seconds
*/
var $lifetime = 900;
/**
* Number of e-mails to be downloaded during one connection to the mailbox
*/
var $download_email_num = 200;
/**
* Number of connections to the mailbox during one download attempt
*/
var $download_connection_num = 3;
// -----------------------------------------------------------------------------
/**
* Main
*
*/
function main()
{
global $t12l;
$message = array();
// -----------------------------------------------------------------------------
// Check for module standalone call
if (t12l_gpc_vars('module')) {
$module_data = array('data' => t12l_gpc_vars('module'));
t12l_module::call_module('standalone', $module_data, $t12l['module_additional']);
exit;
}
// -----------------------------------------------------------------------------
// Serve feed
if (t12l_gpc_vars('d') == 'feed') {
$this->feed();
exit;
}
// -----------------------------------------------------------------------------
// Serve gadget
if (t12l_gpc_vars('d') == 'gadget') {
if ($gadget_function = t12l_gpc_vars('f')) {
$this->gadget($gadget_function);
exit;
}
exit;
}
// -----------------------------------------------------------------------------
// Check for template
if ($template = t12l_gpc_vars('t')) {
$this->template($template);
}
// -----------------------------------------------------------------------------
// Start mail handling
$mail = new t12l_email();
$mail->lifetime = t12l_time::convert_to_seconds($t12l['lifetime'], $t12l['lifetime_unit']);
// -----------------------------------------------------------------------------
// XMLHTTPRequests
if (t12l_gpc_vars('d') == 'xhr') {
if ($xhr_function = t12l_gpc_vars('f')) {
$mail->xmlhttprequest($xhr_function);
exit;
}
include 'xmlhttprequest.class.inc.php';
t12l_xmlhttprequest::server();
exit;
}
// -----------------------------------------------------------------------------
// Ditch e-mail address
if (t12l_gpc_vars('ditchemail')) {
$mail->destroy_address();
header('Location: ' . $t12l['server_protocol'] . $t12l['server_name'] . $t12l['script_url']);
}
// -----------------------------------------------------------------------------
// Delete e-mail
$delete_mail_dialogue = false;
$yes_delete_query = '';
$no_keep_query = '';
if ($t12l['allow_delete_email'] == 'Y'
and $mail_id = t12l_gpc_vars('m')
and t12l_gpc_vars('d') == 'd') {
if (t12l_gpc_vars('c') == 'y') {
if ($mail->delete_mail($mail_id)) {
header('Location: ' . $t12l['server_protocol'] . $t12l['server_name'] . $t12l['script_url']);
}
} else {
$t12l['message'][] = $t12l['text']['txt_sure_delete_mail'];
$delete_mail_dialogue = true;
$yes_delete_query = '?m=' . $mail_id . '&d=d&c=y';
if ($mail_id = t12l_gpc_vars('m')) {
$no_keep_query = '?m=' . $mail_id;
}
}
}
// -----------------------------------------------------------------------------
// Get e-mail address
if (t12l_gpc_vars('getemail')) {
if ($mail->get_address()) {
header('Location: ' . $t12l['server_protocol'] . $t12l['server_name'] . $_SERVER['REQUEST_URI']);
exit;
} else {
$t12l['message'][] = $t12l['text']['txt_could_not_create_email'];
}
}
// -----------------------------------------------------------------------------
// Build e-mail address from input and from defined e-mail host name
if (isset($t12l['_post']['setemail'])) {
$_POST['setemailaddressintern'] = $_POST['setemailaddress'] . '@' . $t12l['email_address_host_name'];
}
// Handle and validate form
require_once 'HTML/QuickForm.php';
// Start form handler
$form = new HTML_QuickForm('setemailform', 'POST', $t12l['script_url'] . '?d=xhr&f=setaddress', '', 'onsubmit="return !HTML_AJAX.formSubmit(this, \'temporary_address\');"');
// $form = new HTML_QuickForm('setemailform', 'POST', $t12l['script_url']);
// Get form configuration
require 'email_form.inc.php';
// Validate form
if (isset($t12l['_post']['setemail'])
and $form->validate()) {
if ($t12l['allow_set_email_address'] == 'Y'
and $mail->get_address(true)) {
header('Location: ' . $t12l['server_protocol'] . $t12l['server_name'] . $_SERVER['REQUEST_URI']);
exit;
} else {
$t12l['message'][] = $t12l['text']['txt_could_not_create_email'];
}
}
require_once 'HTML/QuickForm/Renderer/ArraySmarty.php';
$renderer =& new HTML_QuickForm_Renderer_ArraySmarty($this->output->get_object, true);
$form->accept($renderer);
// Assign array with form data
$this->assign('setemailform', $renderer->toArray());
// -----------------------------------------------------------------------------
$show_address = false;
if (t12l_session::get('address_id') or t12l_gpc_vars('a')) {
$show_address = true;
}
$this->assign('show_address', $show_address);
// -----------------------------------------------------------------------------
if (t12l_session::get('address_id') or t12l_gpc_vars('a')) {
$address_data = $mail->get_address();
$address_data['minutes_left'] = round($address_data['time_left'] / 60);
$this->assign($address_data);
}
// -----------------------------------------------------------------------------
// Get mail content
$show_mail_details = false;
$mail_details = array();
if ($mail_id = t12l_gpc_vars('m')) {
if ($mail_details = $mail->get_mail($mail_id)) {
$show_mail_details = true;
$show_mail_list = false;
}
}
$this->assign($mail_details);
// -----------------------------------------------------------------------------
// Get mail list
$show_mail_list = false;
if ($show_mail_details == false
and $address = t12l_session::get('address_id')) {
// include 'emaillist.class.inc.php';
// $mail_list_setup = array( 'direction' => $t12l['frontend_order'],
// 'limit' => 0);
// $mail_list = new t12l_email_list(false, $mail_list_setup);
$email_message_result = $this->email_message_list();
if (isset($email_message_result['mail_data'])) {
$this->assign('mail_list', $email_message_result['mail_data']);
$show_mail_list = true;
}
// $mail_list_values = $mail_list->values();
$this->assign($email_message_result['mail_list_values']);
}
// -----------------------------------------------------------------------------
// Display reply form and send e-mail
$show_reply_form = false;
if (t12l_session::get('address_id')
and t12l_gpc_vars('d') == 'r'
and $mail_id = t12l_gpc_vars('m')
and $show_mail_details == true) {
$show_reply_form = true;
require_once 'HTML/QuickForm.php';
$form = new HTML_QuickForm('reply', 'POST', $t12l['script_url'] . '?m=' . $mail_id);
$form->addElement('textarea', 'text', $t12l['text']['txt_reply'], array('rows' => 8, 'cols' => 30));
$form->addElement('submit', 'save', $t12l['text']['txt_submit']);
$form->addElement('hidden', 'm');
$form->addElement('hidden', 'd');
$form->addRule('text', $t12l['text']['txt_enter_reply_text'], 'required');
$defaults = array( 'd' => 'r',
'm' => $mail_id,
);
$form->setConstants($defaults);
if ($form->validate()) {
if ($mail->send_reply($mail_id)) {
$t12l['message'][] = $t12l['text']['txt_reply_has_been_sent'];
$show_reply_form = false;
} else {
$t12l['message'][] = $t12l['text']['txt_reply_has_not_been_sent'];
}
}
require_once 'HTML/QuickForm/Renderer/ArraySmarty.php';
$renderer =& new HTML_QuickForm_Renderer_ArraySmarty($this->output->get_object, true);
$form->accept($renderer);
$this->assign('reply', $renderer->toArray());
}
// -----------------------------------------------------------------------------
// Delete expired e-mails and addresses
$mail->delete_expired();
// -----------------------------------------------------------------------------
// Reset time
if (t12l_gpc_vars('resettime')) {
$mail->reset_time();
header('Location: ' . $t12l['server_protocol'] . $t12l['server_name'] . $_SERVER['REQUEST_URI']);
}
// -----------------------------------------------------------------------------
// Get statistics
$statistics = array(
'received_emails' => $t12l['received_emails'],
'valid_emails' => $t12l['sequence_mail'],
'expired_emails' => $t12l['expired_emails'],
'sent_emails' => $t12l['sent_emails'],
'created_addresses' => $t12l['created_addresses'],
);
$this->assign($statistics);
// -----------------------------------------------------------------------------
// Output
$this->assign('page_data', array('page_title' => $t12l['text']['txt_disposable_email_address']));
$this->assign('show_mail_details', $show_mail_details);
$this->assign('show_mail_list', $show_mail_list);
$this->assign('show_reply_form', $show_reply_form);
$this->assign('message', $message);
$this->assign('delete_mail_dialogue',$delete_mail_dialogue);
$this->assign('yes_delete_query', $yes_delete_query);
$this->assign('no_keep_query', $no_keep_query);
return $this->finish();
}
// -----------------------------------------------------------------------------
/**
* Feed
*
*/
function feed()
{
global $t12l;
if (!$address = t12l_gpc_vars('a')) {
return false;
}
$address_id = md5($address);
// Default output is RSS2.0
$rss_template = 'rss_2.0.xml';
switch (trim(t12l_gpc_vars('f'))) {
case 'atom':
$rss_template = 'atom.xml';
break;
case 'rss2':
default:
$rss_template = 'rss_2.0.xml';
break;
}
$t12l['alternative_template'] = 'syndication';
$updated_atom = date('Y-m-d\TH:i:s\Z', t12l_time::current_timestamp());
$mail_data = array();
$out = new t12l_output();
$out->set_global_template($rss_template);
if ($t12l['activate_syndication'] == 'Y') {
include 'emaillist.class.inc.php';
$mail_list_setup = array( 'direction' => $t12l['frontend_order'],
'limit' => 0);
$mail_list = new t12l_email_list(false, $mail_list_setup);
if ($mail_data = $mail_list->get_list($address_id)) {
if (isset($article_data[0])) {
$updated_atom = $article_data[0]['last_modified_atom'];
}
}
}
$out->assign('mail_list', $mail_data);
$out->assign('updated_atom', $updated_atom);
$out->assign('self_script_url', $t12l['server_protocol'] . $t12l['server_name'] . $t12l['script_url'] . '?d=feed&f=atom&a=' . $address);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -