帮我从群发邮件php脚本中删除订阅者

时间:2011-01-15 05:53:33

标签: php massmail subscriber

我需要找到一种方法从群发邮件php脚本中删除订阅者 这是脚本:

<?php

$thisfile=basename(__FILE__, ".php");

$path = GSPLUGINPATH.'gs_massmail/lang/';
$filenames = getFiles($path);
foreach ($filenames as $file) {
 if($file == $LANG.'.php')
  $language_file = $file;
}

if($language_file == FALSE)
 $language_file = 'en_US.php';

require_once $path.$language_file;

add_action('plugins-sidebar','createSideMenu',array($thisfile, 'Mass Mail'));

function get_mass_mail_form(){
 global $i18n;
?>
 <form action="<?php get_page_url(); ?>" method="post" class="contactform" >
  <?php set_mass_mail_page(); ?>
  <p>
   <input type="text" class="text" name="massmail[email]" value="e-mail" onFocus="doClear(this)" onBlur="doDefault(this)" />
  </p>
  <p><input type="submit" class="submit" value="<?php echo $i18n['MM_SUBSCRIBE']?>" id="add-receiver" name="add-receiver" /></p>
 </form> 
<?php
}

function show_editor(){
 global $i18n, $HTMLEDITOR;
 ?>
  <h3><?php echo $i18n['MM_SENDMAIL']?></h3>
  <form method="post" class="sendmassmail">
   <p>
    <b><?php echo $i18n['MM_SUBJECT']?></b>
    <br />
    <input type="text" id="subject" name="subject" size="70"/>
   </p>
   <p>
    <textarea id="post-content" rel="<?php echo $i18n['LABEL_PAGEBODY']; ?>" name="post-content"></textarea>
   </p> 
   <p><input class="submit" type="submit" name="submitted" value="<?php echo $i18n['MM_SENDMAILTOALL']?>" /> &nbsp;&nbsp;<?php echo $i18n['OR']; ?>&nbsp;&nbsp; <a class="cancel" href="pages.php?cancel"><?php echo $i18n['CANCEL']; ?></a></p>
  </form>

  <?php 
   if (defined('GSEDITORHEIGHT')) { $EDHEIGHT = GSEDITORHEIGHT .'px'; } else { $EDHEIGHT = '500px'; }
   if (defined('GSEDITORLANG')) { $EDLANG = GSEDITORLANG; } else { $EDLANG = 'en'; }
   if (defined('GSEDITORTOOL')) { $EDTOOL = GSEDITORTOOL; } else { $EDTOOL = 'basic'; }


   if ($EDTOOL == 'advanced') {
    $toolbar = "
      ['Bold', 'Italic', 'Underline', 'NumberedList', 'BulletedList', 'JustifyLeft','JustifyCenter','JustifyRight','JustifyBlock', 'Table', 'TextColor', 'BGColor', 'Link', 'Unlink', 'Image', 'RemoveFormat', 'Source'],
           '/',
           ['Styles','Format','Font','FontSize']
       ";
   } else {
    $toolbar = "['Bold', 'Italic', 'Underline', 'NumberedList', 'BulletedList', 'JustifyLeft','JustifyCenter','JustifyRight','JustifyBlock', 'Link', 'Unlink', 'Image', 'RemoveFormat', 'Source']";
   }
  ?>
  <?php if ($HTMLEDITOR != '') { ?>
  <script type="text/javascript" src="template/js/ckeditor/ckeditor.js"></script>
  <script type="text/javascript">
   var editor = CKEDITOR.replace('post-content', {
          skin : 'getsimple',
          forcePasteAsPlainText : true,
          language : '<?php echo $EDLANG; ?>',
          defaultLanguage : '<?php echo $EDLANG; ?>',
          entities : true,
          uiColor : '#FFFFFF',
    height: '<?php echo $EDHEIGHT; ?>', 
          toolbar : 
          [
          <?php echo $toolbar; ?>
    ]
          //filebrowserBrowseUrl : '/browser/browse.php',
          //filebrowserImageBrowseUrl : '/browser/browse.php?type=Images',
          //filebrowserWindowWidth : '640',
          //filebrowserWindowHeight : '480'
      });
  </script>
  <?php 
  }
}


function setup_mass_mail(){
  global $emailadresses;
  global $_POST, $i, $b, $i18n;

  $xmlfile = GSDATAPATH."other/massmail.xml";
  set_mass_mail_css();
  $v = getXML($xmlfile);

  if(isset($_POST['submitted'])){
   if(strlen($_POST['subject']) == 0 || strlen($_POST['post-content']) == 0)
    $err[] = $i18n['MM_SUBJECTANDMESSAGE'];

   if(count($err) == 0){
    echo "<h3>".$i18n['MM_EMAILSTATUS']."</h3>";
    $server_name = getenv ("SERVER_NAME");       // Server Name
    $request_uri = getenv ("REQUEST_URI");       // Requested URI

    $from = 'noreply@'.substr($server_name, 4, strlen($server_name));

    if(isset($_POST['subject']))
     $subject = $_POST['subject']; //htmlentities($_POST['subject'], ENT_QUOTES, 'UTF-8');
    else
     $subject = $i18n['MM_NEWSLETTERFROM'].$server_name;

    $headers = "From: ".$from."\r\n";
    $headers .= "Return-Path: ".$from."\r\n";
    $headers .= "Content-type: text/html\r\n";

    if(get_magic_quotes_gpc())
     $body = stripslashes($_POST['post-content']); //htmlentities($_POST['post-content'], ENT_QUOTES, 'UTF-8');
    else
     $body = $_POST['post-content'];

    foreach ($v as $row => $value) {
     if(mail($value->email,$subject,$body,$headers))
      $i++;
     else
      $b++;
    }   
    echo '<p class="ok">'.$i18n['MM_MAILWASSENTTO'].' ('.$i.' '.$i18n['MM_OF'].' '.($b+$i).')<p>';
   } else {
    echo '<p class="error">'.implode(".<br />", $err).'</p>';
   }
  }
  echo "<h3>".$i18n['MM_SUBSCRIBERS']."</h3>";
  if(file_exists($xmlfile) ) { 
   echo '<table cellspacing="0" cellpadding="0">
     <tr>
      <td>
      '.$i18n['MM_DATE'].'
      </td>
      <td>
      '.$i18n['MM_EMAIL'].'
      </td>
     </tr>
   ';
   foreach ($v as $row => $value) {
    $emailadresses .= $value->email.';';
    echo '<tr>';
     echo '<td>'.date('Y-m-d', (int)$value->date).'</td>';
     echo '<td>'.$value->email.'</td>';
    echo '</tr>';
   }
   echo '</table>';
   echo '<p><b>'.$i18n['MM_COMMASEPARATED'].':</b> <br />'.$emailadresses;
   show_editor();
  } else {
   echo $i18n['MM_NOREGSUBSCRIBERS'];
  }
}

function set_mass_mail_css(){
 echo '
 <!-- CSS for Mass Mail plugin -->
 <style type="text/css">
  p.ok {
   color: #3dc32b;
  }
  p.error {
   color: #FF0000;
  }
 </style>';
}

function set_mass_mail_page(){
 global $email;
 global $i18n;
 if (isset($_POST['add-receiver'])) {
  set_mass_mail_css();
  $xmlfile = GSDATAPATH."other/massmail.xml";
  $email = $_POST['massmail']['email'];
  $err = array();

  if(!check_email_address($_POST['massmail']['email'])){
   $err[] = $i18n['MM_EMAILWRONGFORMAT'];
  } else {
   if(file_exists($xmlfile) ) { 
    $v = getXML($xmlfile);
    foreach ($v as $row) {
     if($row->email == $_POST['massmail']['email']){
      $err[] = $i18n['MM_EMAILALLREADYREG'];
      break;
     }
    }
   }    
  }

  if(count($err) == 0){
   if (!file_exists($xmlfile) ) { 
    $xml = @new SimpleXMLExtended('<?xml version="1.0" encoding="UTF-8"?><item></item>');
   } else {   
    $xmldata = file_get_contents($xmlfile);
    $xml = new SimpleXMLExtended($xmldata);
   }
   $thislog = $xml->addChild('entry');
   $thislog->addChild('date', time());
   $thislog->addChild('email', $email);
   $xml->asXML($xmlfile);
   echo '<p class="ok">'.$i18n['MM_YOUARENOWSUBSCRIBER'].'</p>';
  } else {
   echo '<p class="error">'.implode(".<br />", $err).'</p>';
  }
 }
}

?>

感谢

1 个答案:

答案 0 :(得分:0)

圣洁的莫莉。

您应该能够通过记事本或任何其他文本编辑器编辑其创建的其他/ massmail.xml文件。

如果您希望以编程方式编辑它(不是真正的单词),我相信您可以使用SimpleXMLExtended类遍历每个XML节点(如代码所示)。如果可能,您应该考虑逐节点读取它,这样整个文件就不会加载到内存中。

作为旁注:我强烈建议不要使用XML来存储邮件列表。如果您使用MySQL(或SQLite,如果您坚持将其存储在文件中)等数据库,则管理起来会更容易,更有效。