PHP Classes
elePHPant
Icontem

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    
Last Updated Ratings Unique User Downloads Download Rankings
2010-10-27 (6 years ago) RSS 2.0 feedNot enough user ratingsTotal: 2,221 This week: 3All time: 1,704 This week: 377Up
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
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/viewmsg.jpg
  • img/test_pop3ml.jpg
  • img/mltable3.jpg
  • img/mltable2.jpg
  • img/mltable1.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 567KB
Downloadpop3ml-2010-10-27.tar.gz 557KB
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,221
This week:3
All time:1,704
This week:377Up