Re: Email::FolderType::MH

2014-06-26 Thread Simon Wistow
On Wed, Jun 25, 2014 at 09:50:01PM -0700, Geoffrey Leach said:
 Before I try to produce one, can anyone tell me why 
 Email::FolderType::MH does not exist? In particular, was there a 
 problem that seemed insurmountable?

Err, it does and has done for 9 years.

http://search.cpan.org/~rjbs/Email-FolderType-0.814/lib/Email/FolderType/MH.pm

Did you mean something else other than MH?




Re: Email::Classifier: not dead yet

2008-12-01 Thread Simon Wistow
On Mon, Dec 01, 2008 at 07:15:20PM -0500, Ricardo SIGNES said:
 I may sit on it for another week or so, but unless I get some feedback on the
 order of no, stop, this is crazy! I am going to release it and start using 
 it
 for things.  Your input is hereby requested!

This is more a point of philosophy and should probably be rephrased as a 
question but - the original goal of the Email project when I helped 
start it was to be as fast and lightweight as possible with as few 
non-core dependencies as could possibly be gotten away with[*]. 

As far as I can tell from a quick glance Classifier could be trivially 
rewritten to use absolutely no non-core dependencies - I know Moose is 
the flavour du jour but I'm still sad to the original goal abandoned.

But hey, this is your baby now (and has been for a long time) so I 
suppose I have no right to grouse. 

Simon

[*] Email::Store being the glaring counterexample and even that 'only' 
used 4 non-core, non-Email modules


Re: Email::Store is dead! Long live Email::Store!

2007-09-19 Thread Simon Wistow
On Tue, Sep 18, 2007 at 07:40:04PM -0500, Karen Cravens said:
 So, uh, anyway.  Where were we?  Oh yeah.  How 'bout that Email::Store? 
 (Email::Archive?)

There are a bunch of lessons that I learnt from working on Email::Store 
(I wasn't the original author) that I wanted to correct with a putative 
rewrite that I never got round to.

1) The package based design

This was partly fallout of being based on Class::DBI but I diskliked 
everything being based on Package variables so

  use Email::Store 'dbi:mysql:mailstore';   
  Email::Store-setup; # Do this once

  Email::Store::Mail-store( $rfc822 );
  Email::Store::Mail-retrieve( $msgid );


what I would have preferred was

  my $store = Email::Store-new(%opts);
  my $mess  = $store-message($id);
  my $top   = $mess-thread-top;

which would have made 

  $store2-add($mess);

possible.

2) No pluggable backend

Email::Store was tied closely to Class::DBI which was best of breed at 
the time. It would have been nice if it could have pluggable backends so 
that you could have used whatever storage engine you wanted - 
Class::DBI, DBIx::Class, Data::ObjectDriver even IMAP or a maildir.

To be fair, I'm not exactly sure how this would work - some sort of 
declarative schema like Jifty::DBI maybe.

3) Always keep a pristine copy of the message around

Err, that's pretty much it. It may mean that you bloat you index size 
but I think it's worth it in the long run. It means you can install 
plugins (if yours is going to be plugin based) or upgrade the system and 
add new functionality that you no is going to work and you never have to 
reindex your dataset.

4) That said, convert everything to UTF-8

Apart from the pristine copy (which should be outputted in ASCII) try 
and do everything in UTF8. It just makes things easier.

5) Watch your timezones.

Another tricky problem that it's always best to be thinking of from the 
start rather than trying to retrofit.

6) Think of conversations rather than emails

It might be worth architecting it as a series of conversations rather 
than being email specific. That way later you could add in UseNet for a 
Deja News style affair (ok so UseNet is very much like email but there 
are differences) and maybe even more exotic things like blog posts 
(which let's face it, with comments, merely an email thread), IM 
conversations or SMS.

Especially given your webboard-meets-mailing-list aspirations that might 
be especially useful.

So onto that (the forum/ml idea). I like the idea and it's something 
I've toyed around with over the years - give the people who want forums 
what they want and the people who want a mailing list what *they* want 
and they can be blisfully ignorant of each other (Yahoo! Groups sort of 
does this as far as I know).

I think it may be worth keeping the three pieces loosely coupled i.e 
Mailing List Manager (like MailMan, Majordomo, Siesta or Sympa), Archive 
(Email::Store or Email::Archive) and web front end (e.g sort of Buscador 
or to an even lesser extent Pipermail, MHonArc or Mariachi).

I'm interested to see your progress and design ideas.

Simon

















Re: Email::Store is dead! Long live Email::Store!

2007-09-18 Thread Simon Wistow
On Mon, Sep 17, 2007 at 03:18:08PM -0700, Steve Atkins said:
 I'd like a perl-based mailing list manager myself

Myself and a couple of other people wrote a Perl based MLM called Siesta 
about 5 years ago. We did it for four reasons

1) To shut people up who said that there was no Perl based MLM
2) It allowed per user Reply-To munging settings thus shutting up 
   even more whiners
3) Mailman can be kind of sucky, especially if you want to extend it. 
   Siesta was plugin based which kept things clean and simple.
4) We were employment-challenged at the time and bored.

Article here
http://www.perl.com/pub/a/2004/02/05/siesta.html

Code on CPAN.

It should be noted that the the latest changes to various module in the 
Email:: namespace break it. I don't have time to debug so I just 
downgraded instead. 

It's a bit rough around the edges and it has no web frontend (I hate 
doing web stuff) although there was a prototype that got knocked up in 
PHP (long story) but I've been using it for 4 years to run various 
mailing lists and it works fine and there's some neat ideas - I 
particularly like, for some reason, that when you create a backup using 
the command line tool it generates a shell script which will reimport 
everything again using the command line tool.

Anyway, that's just a data point but I thought I'd mention it. 

As it turns out that, despite what most people say, even if there *is* a 
Perl MLM they probably won't use it - see also: Sympa.

Simon




Re: Email::Store is dead! Long live Email::Store!

2007-09-14 Thread Simon Wistow
On Fri, Sep 14, 2007 at 05:00:51PM -0400, Christopher Nehren said:
 I've been working on cobbling together a modern mailing list manager
 written in Perl (Saddlebags), because I find it absolutely
 unacceptable that things like the dbic list are running on mailman. As
 a part of this, the subject of storing emails in databases came up.
 Obviously, we turned to Email::Store.

I'm all in favour of rewriting Email::Store - I've never got round to 
doing all the work I needed to do rewriting it. Everytime I sit down 
to do it something else gets in the way.

As for Perl MLMs - have you looked at Siesta? It's a bit rough and ready 
in some places but I've been running mailing lists off it for years.




line feeds in Email::Simple

2005-12-14 Thread Simon Wistow

At the moment when parsing a mail we make a note of the end of the line 
marker and then use that to reconstruct the mail when the as_string() 
method is called.

However, as was pointed out to me rf2822 says

A line is a serie ofcharacters that is delimited with the two 
characters carriage-return and line-feed;

See also

http://qix.it/~ludoo/archive/2004/07/line_endings.html


So we should probably have a an option some how (either passed into new 
or $Email::Simple::EOL_MODE) which dictates whether we want

1) Force DOS line feeds  (the default)
2) Force Unix line feeds (technically not a rfc2822 mail)
3) Force Mac line feeds  (see above)
4) Whatever was in the mail already (current default)

Simon

 




Re: (Ab)using Email::Store::Entity

2005-06-06 Thread Simon Wistow
On Sat, May 28, 2005 at 03:43:46AM -, Karen J. Cravens said:
 Does anybody see anything egregiously stupid about doing this?  I mean, 
 besides the fact that I'm going to have to deal with custom versions of 
 core (to Email::Store, anyhow) packages, that is.

Sorry it's taken so long to get back to you - I've been absolutely 
swamped.

If I'm reading your right (and that's not guaranteed since I'm coming 
down with a post heavy week and end of project cold) then you just want 
to correlate entities differently.

You could always create a ne wplugin called Email::Store::SimpleEntity 
and then exclude the original Entity plugin from being imported using


 use Email::Store { except = [ Email::Store::Entity ] }, $dsn;


Let me know if that's not what you meant.

Simon




[cpan #12920] Some extensions for Email::Folder::Maildir

2005-05-23 Thread Simon Wistow
This forwarded from brian d foy - I think I'm against the proposal but I 
need a bit of time to nail down why precisely. 

Brian D Foy said:

I was playing with Email::Folder::Maildir, but wanted to move around in
the message queue. I added a lot to the package and here it is. I'd
really like to see the same API available to all subclasses of
Email::Folder::Reader, where appropriate.

BEGIN {
package Email::Folder::Maildir;

sub count { 
$_[0]-{_messages} || $_[0]-_what_is_there;
scalar @{ $_[0]-{_messages} };
}

sub new  { shift-SUPER::new( @_ )-init }
sub init 
{ 
$_[0]-_what_is_there; 
$_[0]-{_cursor} = -1; # next_message starts at 0;
$_[0]  
}

sub messages { $_[0]-{_messages}}

sub message_total{ $#{ $_[0]-messages } + 1 }

sub cursor   { $_[0]-{_cursor} += $_[1] }

sub current_message  { $_[0]-get_message( $_[0]-cursor   ) }
sub previous_message { $_[0]-get_message( $_[0]-cursor( -1 ) ) }
sub next_message { $_[0]-get_message( $_[0]-cursor( +1 ) ) }

sub message_file 
{ 
abs( $_[1] ) = $_[0]-message_total ? 
$_[0]-{_messages}[ $_[1] ] : () 
}

sub get_message
{
my $self = shift;
my $num  = shift;

my $file = $self-message_file( $num );
open my($fh), $file or carp Couldn't open file $file: $!;
my $message = join '', $fh;
}

}




Re: Accessing via POP3 and extracting attachments

2005-02-14 Thread Simon Wistow
On Mon, Feb 14, 2005 at 12:56:52PM +, Jos? Castro said:
 Hi, guys.
 
 I'm about to code something that should access a mail account via
 POP3, extract the new emails, filter only the ones with a specific
 sender/subject, check for attachments and, if existing, save them to
 disk and do stuff with them.

Seems fine although, if you wnated to drink the Email::* kool-aid you 
could write Email::Folder::POP3 and Email::FolderType::POP3 (and 
Email::Delete::POP3 :) 

I have to admit I found problems with Email::MIME and switched to 
MIME::Parser (hopefully temporarily) in Email::Store::Attachment

http://siesta.unixbeard.net/svn/trunk/Email-Store/lib/Email/Store/Attachment.pm