PHP
  Home arrow PHP arrow Page 2 - Creating a Mailing List Manager with P...
Dev Shed Forums 
Administration  
AJAX  
Apache  
BrainDump  
DHTML  
Flash  
Java  
JavaScript  
Multimedia  
MySQL  
Oracle  
Perl  
PHP  
Practices  
Python  
Reviews  
Security  
Style-Sheets  
Web Services  
XML  
Zend  
Zope  
Forums Sitemap 
IBM® developerWorks 
Sun Developer Network 
E-Commerce Hosting 
Linux Web Hosting 
Managed Hosting 
Small Business Hosting 
Mobile Linux 
App Generation ROI 
VPS Hosting 
Weekly Newsletter

 
Developer Updates  
Free Website Content 
 RSS  Articles
 RSS  Forums
 RSS  All Feeds
Write For Us Get Paid 
Request Media Kit
Contact Us 
Site Map 
Privacy Policy 
Support 
 USERNAME
 
 PASSWORD
 
 
  >>> SIGN UP!  
  Lost Password? 
PHP

Creating a Mailing List Manager with PHP
By: Duncan Lamb
  • Search For More Articles!
  • Disclaimer
  • Author Terms
  • Rating: 5 stars5 stars5 stars5 stars5 stars / 39
    1999-12-16

    Table of Contents:
  • Creating a Mailing List Manager with PHP
  • Creating the front page
  • Adding names to the list
  • Editing the names
  • Autoresponders
  • Conclusion

  • Rate this Article: Poor Best 
      ADD THIS ARTICLE TO:
      Del.ici.ous Digg
      Blink Simpy
      Google Spurl
      Y! MyWeb Furl
    Email Me Similar Content When Posted
    Add Developer Shed Article Feed To Your Site
    Email Article To Friend
    Print Version Of Article
    PDF Version Of Article
     
     
    ADVERTISEMENT


    Creating a Mailing List Manager with PHP - Creating the front page


    (Page 2 of 6 )


    The structure of the application will be straightforward. All the scripts will be in the main directory, and all data files in a data/ directory. Each list will have its addresses stored in a separate file in that directory. There will also be a log file, saved as a simple text file.

    The lists we are going to use (only one at the moment) are stored in the lists.txt file in the data directory. The format for the file has one list per line, with the "familiar" list name and the filename for the list separated by a pipe ("|"). This file will be used to build the select box used to specify which list to perform a particular action on. By grabbing the filename ($Filename) from a form, it is easy to grab the addresses out of the specified list.

    I’m a big believer in putting the most often used features up front for ease of use. Once the application is up and running, the most often-used feature would be sending an email to the list. With that in mind, we’ll build a "Send to" form on the index page, along with links to all the administrative functions:

    index.php3

    <html><head><title>Mailing List Administration</title></head><body> <br> <center><H1>Mailing List Administration</H1></center> Send an email to a mailing list: <form method=post action="sendemail.php3"> <table><tr><td> <b>From Address:</b> <input type=text name="From" size="40" value=""> <br> <b>Subject:</b><input type=text name="Subject" size="40"> </td><td><table cellspacing=15><tr><td valign=top> <b>List:</b> </td><td> <select name="List" size=4> <? $groups = file("data/lists.txt"); for ($index=0; $index < count($groups); $index++) { $grouplist = split("\|", chop($groups[$index])); ?> <option value="<? echo $grouplist[1] ?>" <? if ($index==0) {echo "selected";} ?> <? echo $grouplist[0] ?><br> <? } ?> </select></td> <td valign=top><b><a href="newlist.php3">Make a new list.</a></b> <br><a href="addnames.php3">Add names to a list</a>. <br><a href="picklist.php3">Edit/Delete names</a>. <br><a href="data/log.txt">View Send Log</a>. <br><a href="autoresponder.php3">View/Edit Autoresponder</a>. </td></tr></table> </td></tr></table> Type or paste your message below: <br><textarea cols=50 rows=10 name="Body"></textarea> <br><br> <input type="submit" name="Submit" value="Send Mail"> </form> <br> </body></html>
    You’ll notice the entire script is normal HTML, except for lines 14-26. These lines read in the lists.txt file, spilt each line on the "|", and format them into the select list. (The file function is explained in more detail below.) This produces a tidy list, which will display the common name of the list to the user, and store the filename for the list as the value of the picked option.

    Note: To make things even easier, set a default "value" for the "From Address" in the form. By doing so, that blank will automatically be filled in for you, but still allow you to change it if needed.

    By grabbing the filename ($Filename) from this form on the index page, it is easy to grab the addresses out of the specified list.

    When submitted, an entire list is mailed the message. The data goes directly to this script:

    sendemail.php3

    <html><head><title>Updating file....</title></head><body> <? $addresses = file("data/$List"); for ($index=0; $index < count($addresses); $index++) { mail("$addresses[$index]","$Subject", "$Body","From: $From\nReply-To: $From"); } $myfile = fopen("data/log.txt","a"); fputs($myfile,$Subject."\t".date("dS of F Y h:i:s A")."\t".$List."\n"); fclose($myfile); ?> Your message was sent! <br><br> <a href="index.php3">Home</a>. </body></html>

    This script makes use of some very useful functions. First is the mail function (line 7), one of the most high-impact, yet easy to use functions that exist in PHP. By default, it accesses sendmail on a UNIX system, but this can be changed to another server by editing the php.ini file. The format for using it is as follows:

    mail(string to, string subject, string message, string [additional_headers]);

    For additional headers, you can include everything observed by looking at the headers of your mail messages, including X-Mailer, Reply-To, CC:, Bcc, Mime-Version, you can even make up your own headers if you are so inclined.

    To retrieve email addresses (lines 3-5), the file function is used. This function reads the entire file into an array, with each line in the file represented by an element in the array. Since the names are stored in the file one to a line, each element in the array will contain an email address. Once this is done, looping through the addresses, and calling mail for each one will send your message out individually to each list member.

    Note: An important caveat to using the file function is that the newline is also stored in each array element. This makes it necessary to chop() or trim() each element in many situations.

    The final step in the script is to make a log entry so we can track the messages we send (lines 11-13). Here a log is kept in its simplest form, just a text file. The "\t" characters used translate to tabs, much like "\n" translates to a newline character.

    Another interesting function is used here – the date function. It has some rather involved formatting rules, which are adequately explained in the PHP documentation. Be sure to read it, and try to use it in sensible places, as it does allow quite a few options.

    More PHP Articles
    More By Duncan Lamb


       · The code have lot of little mistakes.
       · No it doesn't whoever posted that comment above needs to get a clue.
     

       

    PHP ARTICLES

    - Authentication Scripts for a User Management...
    - Utilizing the Use Keyword for Namespaces in ...
    - Building a User Management Application
    - Working With Different Namespaces in PHP 5
    - User Management Explained: Overview
    - Using Namespaces in PHP 5
    - Database Security: Guarding Against SQL Inje...
    - Building a Modular Exception Class in PHP 5
    - Database and Password Security for Web Appli...
    - Handling MySQL Data Set Failures in PHP 5
    - Building Site Registration for Web Applicati...
    - Intercepting Customized Exceptions in PHP 5
    - Securing Your Web Application Against Attacks
    - Sub Classing Exceptions in PHP 5
    - Authentication for Web Application Security





    © 2003-2008 by Developer Shed. All rights reserved. DS Cluster 1 hosted by Hostway
    Stay green...Green IT