PHP Classes

pop3ml: Manage mailing lists using a POP3 account

Recommend this page to a friend!
  Info   Screenshots Screenshots   View files View files (26)   DownloadInstall with Composer Download .zip   Reputation   Support forum (2)   Blog    
Ratings Unique User Downloads Download Rankings
StarStarStarStar 66%Total: 2,293 This week: 1All time: 1,700 This week: 560Up
Version License PHP version Categories
pop3ml 0.2GNU General Publi...5.0Email, PHP 5, Databases
Description 

Author

This class can be used to manage or newsletters mailing lists using a POP3 account, whitout a local smtp server.

It works with php5 and mysql => 4. It's highly configurable by users.
You can subscribe/unsubscribe simply with mail messages. There is optional subscription/unsubscription confirmation,
subscription moderation, message moderation, digest message mode, parent/children list management, mail scheduling to
postpone a message, mail filter (procmail-like syntax), message queue for unsent emails, message size check,
command to retrieve messages, bounce detection, message header management, black/white list, multi rcpt-to smtp command
and others functions.

Innovation Award
PHP Programming Innovation award nominee
March 2009
Number 10


Prize: One downloadable copy of PhpED Professional
Managing a mailing list consists on several tasks that include receiving and resending messages sent to the mailing list, joining and removing mailing lists subscribers, etc..

This class provides a complete solution to do all that in PHP.

Manuel Lemos
Picture of giuseppe lucarelli
Name: giuseppe lucarelli <contact>
Classes: 5 packages by
Country: Italy Italy
Age: 65
All time rank: 85433 in Italy Italy
Week rank: 51 Up2 in Italy Italy Up
Innovation award
Innovation award
Nominee: 2x

Details

Pop3ml Php Mailinglist/Newsletter manager ========================================== Version 0.2.beta (April 09 2010) This is a php script class to manage Mailing lists without a local smtp server. You need only a simple pop3 mail account. It works with php5 and mysql => 4. It's highly configurable by users. You can subscribe/unsubscribe simply with mail messages. There is optional subscription/unsubscription confirmation, subscription moderation, message moderation, digest message mode, parent/children list management, mail scheduling to postpone a message, mail filter (procmail-like syntax), message queue for unsent emails, message size check, command to retrieve messages, bounce detection, message header management, black/white list, multi rcpt-to smtp command and others functions. There is also a program to test list settings without sending any message. You can configure it with programs like phpMyAdmin or, if you prefer with 'goshweb', another php program developed by myself. Installation: please refer to INSTALL file. ADMINISTRIVIA: ------------------- MAILING LIST SUBSCRIPTION: send a message to ML address, without subject and with body text: subscribe If ML is configured with subscribe confirmation, you will receive an email message to validate your request. Reply to continue subscription. If you want to subscribe with digest mode: subscribe.digest you can change 'subscribe' word with any other word or, if you want a more complex detection, you can use a regexp expression, for example changing the value of '[[:SUBSCRIBE=subscribe:]]' message of 'language' field ('mltable' record) to: [[:SUBSCRIBE=(\s+|)(i|)(\s+|)subscribe:]] in this way you can do a subscribe request with both "subscribe" and "i subscribe" body text MAILING LIST UNSUBSCRIPTION: send a message to ML address, without subject and with body text: unsubscribe If ML is configured with unsubscribe confirmation, you will receive an email message to validate your request. Reply to continue unsubscription. If you want to unsubscribe from digest mode: unsubscribe.digest CHANGING SUBSCRIPTION MODE: send a message to ML address, without subject and with body text: toggle If ML is configured with subscribe confirmation, you will receive an email message to validate your request. Reply to confirm your request. CHANGING/SETTING SUBSCRIBER PASSWORD FOR WEB ACCESS TO MESSAGES ARCHIVE: send a message to ML address, without subject and with body text: password NewPassword OldPassword where 'password' is the request command, 'NewPassword' is the new value, and 'OldPassword' is the initial value set at subscription time, space separed. Please don't use 'space', 'carriage return','tab','line feed' or other special characters for password value. MAILING LIST MESSAGE MODERATION: if moderator(s) reply to e-mail messages received from ML, they will be delivered to all subscribers, otherwise they will be removed later (depending on field defined at the beginning of the class 'EXPIRE_MSG_MOD') RETRIEVE MESSAGES FROM ML: send a message to ML address, without subject and body text: get [message(s) number(s)] for example: get 1 to retrieve message number 1 get 1,2,3 to retrieve messages 1,2 and 3 get 1,2,5-10,11 to retrieve messages 1,2, from 5 to 10 and 11 GET HELP MESSAGE FROM ML: send a message to ML address, without subject and body text: help SEND AN EMAIL MESSAGE TO ML OWNER: send a message to ML address, without subject and body text: notify owner RETRIEVE LIST SCHEDULED MESSAGES send a message to ML address, without subject and body text: scheduled list REMOVE A SCHEDULED MESSAGS send a message to ML address, without subject and body text: drop scheduled [messageid] for example: drop scheduled 102 -------------------------- Parent/Children management: this script can manage parent/children ML recursively. You can have, for example, some list with subscribers, and one or more ML child list. if you add a ML list name (child ML) to another ML (parent ML) subscribers list, all posted messages to parent ML will be delivered to all children subscribers email addresses (eventually child ML). you can have, for example, some ML: listname listaddress subscribers list denysublist allowsublist parentlist -------- ----------- ---------------- ----------- ------------ ---------- sample1 sample1@domain.com sample1user1@gmail.com mainlist,sample4 sample1user2@yahoo.com sample2 sample2@otherdomain.com sample2user1@mailserver.com mainlist sample2user2@gmail.com sample2user3@yahoo.com sample3 sample3 sample3@bsmc.it sample3user1@mailserver.com mainlist and a parent list: mainlist mainlist@mail.com mainlistuser1@gmail.com mainlistuser2@yahoo.com *@buyit.com .*@somedom.org sample1 sample2 if you send a message to 'mainlist', it will be delivered to: mainlistuser1@gmail.com mainlistuser2@yahho.com sample1user1@gmail.com sample1user2@yahoo.com sample2user1@mailserver.com sample2user2@gmakl.com sample2user3@yahoo.com sample3user1@mailserver.com (because 'sample3' list is set as 'sample2' child) all users can post to other lists and parent too, due to 'parentlist' setting BOUNCE EMAIL ------------ the script checks if received emails are bounced messages from smtp servers, to avoid an infinite loop from sender and ML manager. it also notify all bounced emails to ML owner and remove associated queued messages. anyway if you put an email header value into 'headerchange' field (ie. 'Return-Path: listowner@someserver.com' or 'Return-Path:') when an email fails to reach the destination address it will be bounced to this address, not to ML. for more security i have added the chance to use another php script class, 'BounceHandler', more complex then mine. if you have almost one public list (post allowed for everyone) it's better to use it, just pay attention to memory usage. download it from phpclasses repository (http://www.phpclasses.org/browse/file/11665.html) and put it into your pop3ml installation folder. if there is some kind of unrecognized bounced email you can add some procmail-like recipes to 'mailfilter' field (refer to INSTALL file). SCHEDULED EMAIL --------------- if you want to use extra header for mail scheduling, with mozilla thunderbird use following instructions: # Select Edit | Preferences or Thunderbird | Preferences... from the menu in Mozilla Thunderbird. # Open the Advanced category. # Go to the General tab. # Click Config Editor.... # Enter "mail.compose.other.header" (not including the quotation marks) under Filter:. # Double-click mail.compose.other.header. # Enter the desired custom headers in the Enter string value dialog. (ie. "X-Scheduled") # restart thunderbird CHANGELOG See ChangeLog.txt Download: http://www.bsmc.it/ftp/programs/php/pop3ml-0.1.beta.tgz Giuseppe Lucarelli giu.lucarelli@gmail.com Enjoy!

Screenshots  
  • img/mltable1.jpg
  • img/mltable2.jpg
  • img/mltable3.jpg
  • img/test_pop3ml.jpg
  • img/viewmsg.jpg
  Files folder image Files  
File Role Description
Files folder imageincludes (6 files)
Files folder imagepatches (3 files)
Files folder imagesql (4 files)
Files folder imagetemplate (5 files)
Accessible without login Plain text file README Doc. very simple readme file
Accessible without login Plain text file config.php Conf. configuration script
Accessible without login Plain text file INSTALL Doc. installation notes
Accessible without login Plain text file mlsend.php Example sample script to run pop3ml class
Plain text file test_pop3ml.php Aux. extra script to test/send message sending
Plain text file viewmsg.php Aux. extra script to show list's messages
Plain text file ChangeLog.txt Data ChangeLog file
Plain text file clean_pop3ml.php Aux. extra script to remove old records

  Files folder image Files  /  includes  
File Role Description
  Plain text file class.genpass.php Aux. sample script to generate a password value
  Plain text file class.pop3ml.php Class main php script class
  Plain text file class.scheduledate.php Aux. extra class to manage scheduling date
  Plain text file class.viewmsg.php Aux. extra class to show list's messages
  Accessible without login Plain text file functions.php Aux. apache authentication script
  Plain text file getattach.php Aux. simple script to download message's attachment

  Files folder image Files  /  patches  
File Role Description
  Plain text file patch-0.1-0.2.php Aux. script to change release
  Plain text file README Doc. explains how to change release
  Plain text file sqlchanges.php Aux. script to change release

  Files folder image Files  /  sql  
File Role Description
  Plain text file config.goshweb.sql Data another specific sql table for an extra program
  Plain text file mltable-it.sql Data italian version of mailinglist sql table structure
  Plain text file mltable.sql Data mailinglist sql table structure
  Plain text file pop3ml.sql Data database structure file

  Files folder image Files  /  template  
File Role Description
  Plain text file clean-lynx.sh Example shell script sample
  Plain text file clean.sh Example shell script sample
  Accessible without login Plain text file crontab.sample Data unix cron shell script sample
  Accessible without login Plain text file mlsend-lynx.sh Data lynx like shell script sample
  Accessible without login Plain text file mlsend.sh Data wget like shell script sample

Downloadpop3ml-2010-10-27.zip 568KB
Downloadpop3ml-2010-10-27.tar.gz 559KB
Install with ComposerInstall with Composer
Needed packages  
Class DownloadWhy it is needed Dependency
POP3 e-mail client Download .zip .tar.gz accessing and retrieving e-mail messages Required
SMTP E-mail sending class Download .zip .tar.gz for connecting to a local/remote smtp server and sending e-mail messages Required
Simple Authentication and Security Layer Download .zip .tar.gz for standard pop3 authentication Required
PHP MIME Email Message Parser Download .zip .tar.gz for parsing and decoding e-mail messages Required
 Version Control Unique User Downloads Download Rankings  
 0%
Total:2,293
This week:1
All time:1,700
This week:560Up
 User Ratings  
 
 All time
Utility:83%StarStarStarStarStar
Consistency:83%StarStarStarStarStar
Documentation:83%StarStarStarStarStar
Examples:83%StarStarStarStarStar
Tests:-
Videos:-
Overall:66%StarStarStarStar
Rank:496