how i learned to stop worrying and love email::: the 2007 pep talk!!

473
Perl Email Project the 2007 PEP talk!!!

Upload: ricardo-signes

Post on 17-May-2015

5.576 views

Category:

Technology


1 download

DESCRIPTION

Ready? 250 OK! Everybody loves email, right? Right! What better language than Perl for handling all your email needs? None, right? Right! After all, with about nine hundred email modules on the CPAN, the only question is: which tool is right for the job?This year, the Perl Email Project is going to tell you what's what. We'll see what modules solve what problems, how they differ, and how they (may or my not) work together.We'll also show what problems aren't well-solved, what is in the works to make it happen, and how you can help.

TRANSCRIPT

Page 1: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

PerlEmail Project

the 2007 PEP talk!!!

Page 2: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

How I Learned To Stop Worrying

andLove Email

Page 4: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!
Page 5: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

we’re hiring: http://xrl.us/pobox

Page 6: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

Perl Email Project

Page 7: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

PEP

Page 8: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

Email::

Page 9: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

simpleefficientaccurate

Page 10: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

less processor time

Page 11: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

less memory

Page 12: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

fewer classes

Page 13: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

fewer methods

Page 14: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

LESS OF A PAIN IN THE ASS

Page 15: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

Make Email Handling Suck

Less

Page 16: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

writing better modules

Page 17: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

maintaining old modules

Page 18: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

sharing knowledge

Page 19: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

Modules!

Page 20: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

Frameworks

Page 21: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

Mail-Box

Page 22: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

Email::

Page 23: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

Message Objects

Page 24: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

Email::Simple&

Email::MIME

Page 25: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!
Page 26: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

use Email::Simple;

Page 27: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

use Email::Simple;

my $email = Email::Simple->new($string);

Page 28: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

use Email::Simple;

my $email = Email::Simple->new($string);

use Email::Simple::Creator;

Page 29: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

use Email::Simple;

my $email = Email::Simple->new($string);

use Email::Simple::Creator;my $email = Email::Simple->create(

Page 30: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

use Email::Simple;

my $email = Email::Simple->new($string);

use Email::Simple::Creator;my $email = Email::Simple->create( header => [

Page 31: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

use Email::Simple;

my $email = Email::Simple->new($string);

use Email::Simple::Creator;my $email = Email::Simple->create( header => [ To => ‘[email protected]’,

Page 32: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

use Email::Simple;

my $email = Email::Simple->new($string);

use Email::Simple::Creator;my $email = Email::Simple->create( header => [ To => ‘[email protected]’, From => ‘IRS <[email protected]>’,

Page 33: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

use Email::Simple;

my $email = Email::Simple->new($string);

use Email::Simple::Creator;my $email = Email::Simple->create( header => [ To => ‘[email protected]’, From => ‘IRS <[email protected]>’, Subject => ‘Please See Me’,

Page 34: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

use Email::Simple;

my $email = Email::Simple->new($string);

use Email::Simple::Creator;my $email = Email::Simple->create( header => [ To => ‘[email protected]’, From => ‘IRS <[email protected]>’, Subject => ‘Please See Me’, Keyword => ‘1099’,

Page 35: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

use Email::Simple;

my $email = Email::Simple->new($string);

use Email::Simple::Creator;my $email = Email::Simple->create( header => [ To => ‘[email protected]’, From => ‘IRS <[email protected]>’, Subject => ‘Please See Me’, Keyword => ‘1099’, Keyword => ‘1040’,

Page 36: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

use Email::Simple;

my $email = Email::Simple->new($string);

use Email::Simple::Creator;my $email = Email::Simple->create( header => [ To => ‘[email protected]’, From => ‘IRS <[email protected]>’, Subject => ‘Please See Me’, Keyword => ‘1099’, Keyword => ‘1040’, ],

Page 37: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

use Email::Simple;

my $email = Email::Simple->new($string);

use Email::Simple::Creator;my $email = Email::Simple->create( header => [ To => ‘[email protected]’, From => ‘IRS <[email protected]>’, Subject => ‘Please See Me’, Keyword => ‘1099’, Keyword => ‘1040’, ], body => “[ insert threatening text here ]”

Page 38: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

use Email::Simple;

my $email = Email::Simple->new($string);

use Email::Simple::Creator;my $email = Email::Simple->create( header => [ To => ‘[email protected]’, From => ‘IRS <[email protected]>’, Subject => ‘Please See Me’, Keyword => ‘1099’, Keyword => ‘1040’, ], body => “[ insert threatening text here ]”);

Page 39: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!
Page 40: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

$email->as_string;

Page 41: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

$email->as_string;

$email->header(‘Subject’);

Page 42: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

$email->as_string;

$email->header(‘Subject’);

$email->header_set(Subject => ‘Re: mtfnpy’);

Page 43: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

$email->as_string;

$email->header(‘Subject’);

$email->header_set(Subject => ‘Re: mtfnpy’);

$email->body;

Page 44: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

$email->as_string;

$email->header(‘Subject’);

$email->header_set(Subject => ‘Re: mtfnpy’);

$email->body;

$email->body_set($big_string);

Page 45: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!
Page 46: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

use Email::Simple;

Page 47: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

use Email::Simple;

my $email = Email::Simple->new( \$string );

Page 48: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

use Email::Simple;

my $email = Email::Simple->new( \$string );$email->body_set( \$new_body );

Page 49: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

use Email::Simple;

my $email = Email::Simple->new( \$string );$email->body_set( \$new_body );

use Email::Simple::FromHandle;

Page 50: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

use Email::Simple;

my $email = Email::Simple->new( \$string );$email->body_set( \$new_body );

use Email::Simple::FromHandle;

my $email = Email::SimpleFromHandle->new(

Page 51: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

use Email::Simple;

my $email = Email::Simple->new( \$string );$email->body_set( \$new_body );

use Email::Simple::FromHandle;

my $email = Email::SimpleFromHandle->new( $input_handle

Page 52: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

use Email::Simple;

my $email = Email::Simple->new( \$string );$email->body_set( \$new_body );

use Email::Simple::FromHandle;

my $email = Email::SimpleFromHandle->new( $input_handle);

Page 53: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

use Email::Simple;

my $email = Email::Simple->new( \$string );$email->body_set( \$new_body );

use Email::Simple::FromHandle;

my $email = Email::SimpleFromHandle->new( $input_handle);

$email->stream_to($output_handle);

Page 54: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!
Page 55: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $email = Email::MIME->new(\$string);

Page 56: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $email = Email::MIME->new(\$string);

use Email::MIME::Creator;

Page 57: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $email = Email::MIME->new(\$string);

use Email::MIME::Creator;my $email = Email::MIME->create(

Page 58: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $email = Email::MIME->new(\$string);

use Email::MIME::Creator;my $email = Email::MIME->create( header => [

Page 59: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $email = Email::MIME->new(\$string);

use Email::MIME::Creator;my $email = Email::MIME->create( header => [ To => ‘[email protected]’,

Page 60: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $email = Email::MIME->new(\$string);

use Email::MIME::Creator;my $email = Email::MIME->create( header => [ To => ‘[email protected]’, From => ‘IRS <[email protected]>’,

Page 61: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $email = Email::MIME->new(\$string);

use Email::MIME::Creator;my $email = Email::MIME->create( header => [ To => ‘[email protected]’, From => ‘IRS <[email protected]>’, Subject => ‘Please See Me’,

Page 62: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $email = Email::MIME->new(\$string);

use Email::MIME::Creator;my $email = Email::MIME->create( header => [ To => ‘[email protected]’, From => ‘IRS <[email protected]>’, Subject => ‘Please See Me’, ],

Page 63: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $email = Email::MIME->new(\$string);

use Email::MIME::Creator;my $email = Email::MIME->create( header => [ To => ‘[email protected]’, From => ‘IRS <[email protected]>’, Subject => ‘Please See Me’, ],

attributes =>

Page 64: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $email = Email::MIME->new(\$string);

use Email::MIME::Creator;my $email = Email::MIME->create( header => [ To => ‘[email protected]’, From => ‘IRS <[email protected]>’, Subject => ‘Please See Me’, ],

attributes => { content_type => ‘multipart/mixed’ },

Page 65: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $email = Email::MIME->new(\$string);

use Email::MIME::Creator;my $email = Email::MIME->create( header => [ To => ‘[email protected]’, From => ‘IRS <[email protected]>’, Subject => ‘Please See Me’, ],

attributes => { content_type => ‘multipart/mixed’ },

parts => [

Page 66: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $email = Email::MIME->new(\$string);

use Email::MIME::Creator;my $email = Email::MIME->create( header => [ To => ‘[email protected]’, From => ‘IRS <[email protected]>’, Subject => ‘Please See Me’, ],

attributes => { content_type => ‘multipart/mixed’ },

parts => [ Email::MIME->create(...),

Page 67: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $email = Email::MIME->new(\$string);

use Email::MIME::Creator;my $email = Email::MIME->create( header => [ To => ‘[email protected]’, From => ‘IRS <[email protected]>’, Subject => ‘Please See Me’, ],

attributes => { content_type => ‘multipart/mixed’ },

parts => [ Email::MIME->create(...), Email::MIME->create(...),

Page 68: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $email = Email::MIME->new(\$string);

use Email::MIME::Creator;my $email = Email::MIME->create( header => [ To => ‘[email protected]’, From => ‘IRS <[email protected]>’, Subject => ‘Please See Me’, ],

attributes => { content_type => ‘multipart/mixed’ },

parts => [ Email::MIME->create(...), Email::MIME->create(...), ],

Page 69: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $email = Email::MIME->new(\$string);

use Email::MIME::Creator;my $email = Email::MIME->create( header => [ To => ‘[email protected]’, From => ‘IRS <[email protected]>’, Subject => ‘Please See Me’, ],

attributes => { content_type => ‘multipart/mixed’ },

parts => [ Email::MIME->create(...), Email::MIME->create(...), ],);

Page 70: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!
Page 71: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

$email->subparts;

Page 72: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

$email->subparts;

$email->parts_set(@parts);

Page 73: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

$email->subparts;

$email->parts_set(@parts);

$email->body_raw;

Page 74: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

problems

Page 75: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

still not efficient enough

problems

Page 76: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

still not efficient enough

FromHandle doesn’t do MIME

problems

Page 77: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

still not efficient enough

FromHandle doesn’t do MIME

Email::MIME doesn’t stream

problems

Page 78: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

still not efficient enough

FromHandle doesn’t do MIME

Email::MIME doesn’t stream

fairly small feature set*

problems

Page 79: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

MIME::Entity

Page 80: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!
Page 81: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $entity = MIME::Entity->new($input_handle);

Page 82: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $entity = MIME::Entity->new($input_handle);my $entity = MIME::Entity->new(\@lines);

Page 83: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $entity = MIME::Entity->new($input_handle);my $entity = MIME::Entity->new(\@lines);

my $entity = MIME::Entity->build(

Page 84: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $entity = MIME::Entity->new($input_handle);my $entity = MIME::Entity->new(\@lines);

my $entity = MIME::Entity->build( To => ‘[email protected]’,

Page 85: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $entity = MIME::Entity->new($input_handle);my $entity = MIME::Entity->new(\@lines);

my $entity = MIME::Entity->build( To => ‘[email protected]’, From => ‘IRS <[email protected]>’,

Page 86: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $entity = MIME::Entity->new($input_handle);my $entity = MIME::Entity->new(\@lines);

my $entity = MIME::Entity->build( To => ‘[email protected]’, From => ‘IRS <[email protected]>’, Subject => ‘Please See Me’,

Page 87: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $entity = MIME::Entity->new($input_handle);my $entity = MIME::Entity->new(\@lines);

my $entity = MIME::Entity->build( To => ‘[email protected]’, From => ‘IRS <[email protected]>’, Subject => ‘Please See Me’, ‘Keyword:’ => [ 1099, 1040 ],

Page 88: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $entity = MIME::Entity->new($input_handle);my $entity = MIME::Entity->new(\@lines);

my $entity = MIME::Entity->build( To => ‘[email protected]’, From => ‘IRS <[email protected]>’, Subject => ‘Please See Me’, ‘Keyword:’ => [ 1099, 1040 ], Data => [ “This might be an audit.” ],

Page 89: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $entity = MIME::Entity->new($input_handle);my $entity = MIME::Entity->new(\@lines);

my $entity = MIME::Entity->build( To => ‘[email protected]’, From => ‘IRS <[email protected]>’, Subject => ‘Please See Me’, ‘Keyword:’ => [ 1099, 1040 ], Data => [ “This might be an audit.” ],);

Page 90: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $entity = MIME::Entity->new($input_handle);my $entity = MIME::Entity->new(\@lines);

my $entity = MIME::Entity->build( To => ‘[email protected]’, From => ‘IRS <[email protected]>’, Subject => ‘Please See Me’, ‘Keyword:’ => [ 1099, 1040 ], Data => [ “This might be an audit.” ],);

$entity->attach(

Page 91: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $entity = MIME::Entity->new($input_handle);my $entity = MIME::Entity->new(\@lines);

my $entity = MIME::Entity->build( To => ‘[email protected]’, From => ‘IRS <[email protected]>’, Subject => ‘Please See Me’, ‘Keyword:’ => [ 1099, 1040 ], Data => [ “This might be an audit.” ],);

$entity->attach( Path => ‘./reports/audit-results.pdf’,

Page 92: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $entity = MIME::Entity->new($input_handle);my $entity = MIME::Entity->new(\@lines);

my $entity = MIME::Entity->build( To => ‘[email protected]’, From => ‘IRS <[email protected]>’, Subject => ‘Please See Me’, ‘Keyword:’ => [ 1099, 1040 ], Data => [ “This might be an audit.” ],);

$entity->attach( Path => ‘./reports/audit-results.pdf’, Type => ‘application/pdf’,

Page 93: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $entity = MIME::Entity->new($input_handle);my $entity = MIME::Entity->new(\@lines);

my $entity = MIME::Entity->build( To => ‘[email protected]’, From => ‘IRS <[email protected]>’, Subject => ‘Please See Me’, ‘Keyword:’ => [ 1099, 1040 ], Data => [ “This might be an audit.” ],);

$entity->attach( Path => ‘./reports/audit-results.pdf’, Type => ‘application/pdf’,);

Page 94: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

problems

Page 95: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

really big (loads 50+ extra modules)

problems

Page 96: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

really big (loads 50+ extra modules)

large, sometimes confusing interface

problems

Page 97: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

really big (loads 50+ extra modules)

large, sometimes confusing interface

history of subtle bugs

problems

Page 98: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

Mail::Message(a Mail::Box Production)

Page 99: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!
Page 100: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $mail = Mail::Message->read($input_handle);

Page 101: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $mail = Mail::Message->read($input_handle);

my $mail = Mail::Message->build(

Page 102: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $mail = Mail::Message->read($input_handle);

my $mail = Mail::Message->build( To => ‘[email protected]’,

Page 103: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $mail = Mail::Message->read($input_handle);

my $mail = Mail::Message->build( To => ‘[email protected]’, From => ‘IRS <[email protected]>’,

Page 104: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $mail = Mail::Message->read($input_handle);

my $mail = Mail::Message->build( To => ‘[email protected]’, From => ‘IRS <[email protected]>’, Subject => ‘Please See Me’,

Page 105: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $mail = Mail::Message->read($input_handle);

my $mail = Mail::Message->build( To => ‘[email protected]’, From => ‘IRS <[email protected]>’, Subject => ‘Please See Me’, Keyword => 1099,

Page 106: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $mail = Mail::Message->read($input_handle);

my $mail = Mail::Message->build( To => ‘[email protected]’, From => ‘IRS <[email protected]>’, Subject => ‘Please See Me’, Keyword => 1099, Keyword => 1040,

Page 107: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $mail = Mail::Message->read($input_handle);

my $mail = Mail::Message->build( To => ‘[email protected]’, From => ‘IRS <[email protected]>’, Subject => ‘Please See Me’, Keyword => 1099, Keyword => 1040,

Page 108: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $mail = Mail::Message->read($input_handle);

my $mail = Mail::Message->build( To => ‘[email protected]’, From => ‘IRS <[email protected]>’, Subject => ‘Please See Me’, Keyword => 1099, Keyword => 1040, data => “This might be an audit.\n”,

Page 109: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $mail = Mail::Message->read($input_handle);

my $mail = Mail::Message->build( To => ‘[email protected]’, From => ‘IRS <[email protected]>’, Subject => ‘Please See Me’, Keyword => 1099, Keyword => 1040, data => “This might be an audit.\n”, file => ‘./reports/audit-results.pdf’,

Page 110: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $mail = Mail::Message->read($input_handle);

my $mail = Mail::Message->build( To => ‘[email protected]’, From => ‘IRS <[email protected]>’, Subject => ‘Please See Me’, Keyword => 1099, Keyword => 1040, data => “This might be an audit.\n”, file => ‘./reports/audit-results.pdf’,);

Page 111: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!
Page 112: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

$mail->string;

Page 113: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

$mail->string;

$mail->head->get(‘Subject’);

Page 114: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

$mail->string;

$mail->head->get(‘Subject’);

$mail->head->delete(‘X-Pointles’);

Page 115: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

$mail->string;

$mail->head->get(‘Subject’);

$mail->head->delete(‘X-Pointles’);

$mail->head->reset(Subject => “I’m on TV!”);

Page 116: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

$mail->string;

$mail->head->get(‘Subject’);

$mail->head->delete(‘X-Pointles’);

$mail->head->reset(Subject => “I’m on TV!”);

$mail->body(

Page 117: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

$mail->string;

$mail->head->get(‘Subject’);

$mail->head->delete(‘X-Pointles’);

$mail->head->reset(Subject => “I’m on TV!”);

$mail->body( Mail::Message::Body->new(data => $data),

Page 118: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

$mail->string;

$mail->head->get(‘Subject’);

$mail->head->delete(‘X-Pointles’);

$mail->head->reset(Subject => “I’m on TV!”);

$mail->body( Mail::Message::Body->new(data => $data),);

Page 119: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!
Page 120: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

$mail->body->parts;

Page 121: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

$mail->body->parts;

$mail->body->attach(@things);

Page 122: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

$mail->body->parts;

$mail->body->attach(@things);$mail->body->part(1)->delete;

Page 123: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

$mail->body->parts;

$mail->body->attach(@things);$mail->body->part(1)->delete;

my @parts = $mail->body->parts(

Page 124: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

$mail->body->parts;

$mail->body->attach(@things);$mail->body->part(1)->delete;

my @parts = $mail->body->parts( sub { $_[0]->mimeType eq ‘text/html }

Page 125: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

$mail->body->parts;

$mail->body->attach(@things);$mail->body->part(1)->delete;

my @parts = $mail->body->parts( sub { $_[0]->mimeType eq ‘text/html });

Page 126: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

$mail->body->parts;

$mail->body->attach(@things);$mail->body->part(1)->delete;

my @parts = $mail->body->parts( sub { $_[0]->mimeType eq ‘text/html });$_->delete for @parts;

Page 127: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

$mail->body->parts;

$mail->body->attach(@things);$mail->body->part(1)->delete;

my @parts = $mail->body->parts( sub { $_[0]->mimeType eq ‘text/html });$_->delete for @parts;$mail->body->rebuild;

Page 128: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

problems

Page 129: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

really big (loads 40+ extra modules)

problems

Page 130: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

really big (loads 40+ extra modules)

large, sometimes confusing interface

problems

Page 131: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

Mail::Internet

Page 132: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

Mail::Internet

Page 133: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

MIME::Lite

Page 134: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

MIME::Lite

Page 135: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

Email::Abstract

Page 136: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!
Page 137: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $abstract = Email::Abstract->new($thing);

Page 138: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $abstract = Email::Abstract->new($thing);

Page 139: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $abstract = Email::Abstract->new($thing);

$abstract->get_header(‘Subject’);

Page 140: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $abstract = Email::Abstract->new($thing);

$abstract->get_header(‘Subject’);$abstract->set_header(Subject => ‘Foo!’);

Page 141: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $abstract = Email::Abstract->new($thing);

$abstract->get_header(‘Subject’);$abstract->set_header(Subject => ‘Foo!’);

Page 142: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $abstract = Email::Abstract->new($thing);

$abstract->get_header(‘Subject’);$abstract->set_header(Subject => ‘Foo!’);

$abstract->get_body;

Page 143: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $abstract = Email::Abstract->new($thing);

$abstract->get_header(‘Subject’);$abstract->set_header(Subject => ‘Foo!’);

$abstract->get_body;$abstract->set_body(‘This is a short body!’);

Page 144: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $abstract = Email::Abstract->new($thing);

$abstract->get_header(‘Subject’);$abstract->set_header(Subject => ‘Foo!’);

$abstract->get_body;$abstract->set_body(‘This is a short body!’);

Page 145: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $abstract = Email::Abstract->new($thing);

$abstract->get_header(‘Subject’);$abstract->set_header(Subject => ‘Foo!’);

$abstract->get_body;$abstract->set_body(‘This is a short body!’);

$abstract->as_string;

Page 146: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $abstract = Email::Abstract->new($thing);

$abstract->get_header(‘Subject’);$abstract->set_header(Subject => ‘Foo!’);

$abstract->get_body;$abstract->set_body(‘This is a short body!’);

$abstract->as_string;

Page 147: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $abstract = Email::Abstract->new($thing);

$abstract->get_header(‘Subject’);$abstract->set_header(Subject => ‘Foo!’);

$abstract->get_body;$abstract->set_body(‘This is a short body!’);

$abstract->as_string;

$abstract->cast(‘Mail::Internet’);

Page 148: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!
Page 149: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

Email::Simple & ::MIME

Page 150: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

Email::Simple & ::MIME

MIME::Entity

Page 151: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

Email::Simple & ::MIME

MIME::Entity

Mail::Internet

Page 152: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

Email::Simple & ::MIME

MIME::Entity

Mail::Internet

Mail::Message

Page 153: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

Email::Simple & ::MIME

MIME::Entity

Mail::Internet

Mail::Message

more coming

Page 154: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

problems

Page 155: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

missing some key methods

problems

Page 156: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

missing some key methods

needs more testing for complex message types

problems

Page 157: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

missing some key methods

needs more testing for complex message types

can be inefficient

problems

Page 158: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

suggestion

Page 159: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

suggestion

learn all of Email::Simple and most of Email::MIME

Page 160: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

suggestion

learn all of Email::Simple and most of Email::MIME

for sending your own simple emails, use these

Page 161: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

suggestion

Page 162: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

learn the basics of Mail::Message

suggestion

Page 163: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

learn the basics of Mail::Message

use it if you know you’ll need to use more of Mail::Box in the future

suggestion

Page 164: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

learn the basics of Mail::Message

use it if you know you’ll need to use more of Mail::Box in the future

use it if you have complex encoding or MIME-handling requirements

suggestion

Page 165: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

suggestion

Page 166: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

learn the basics of handling MIME::Entity messages

suggestion

Page 167: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

learn the basics of handling MIME::Entity messages

lots of code uses them

suggestion

Page 168: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

learn the basics of handling MIME::Entity messages

lots of code uses them

use MIME::Entity when you need to cope with crappy input that nothing else can parse

suggestion

Page 169: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

suggestion

Page 170: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

suggestion

if you write an API that is passed an email message, consider using Abstract

Page 171: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

suggestion

if you write an API that is passed an email message, consider using Abstract

if it exists primarily for handling email, pick a more complete library to use, and stick to it.

Page 172: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

Email Collections

Page 173: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

Mail::Box

Page 174: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!
Page 175: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $maildir = Mail::Box::Maildir->new

Page 176: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $maildir = Mail::Box::Maildir->new folder => ‘./Maildir/’,

Page 177: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $maildir = Mail::Box::Maildir->new folder => ‘./Maildir/’,);

Page 178: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $maildir = Mail::Box::Maildir->new folder => ‘./Maildir/’,);

Page 179: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $maildir = Mail::Box::Maildir->new folder => ‘./Maildir/’,);

my $message = $maildir->message(4);

Page 180: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $maildir = Mail::Box::Maildir->new folder => ‘./Maildir/’,);

my $message = $maildir->message(4);

Page 181: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $maildir = Mail::Box::Maildir->new folder => ‘./Maildir/’,);

my $message = $maildir->message(4);

$message->delete;

Page 182: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $maildir = Mail::Box::Maildir->new folder => ‘./Maildir/’,);

my $message = $maildir->message(4);

$message->delete;

Page 183: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $maildir = Mail::Box::Maildir->new folder => ‘./Maildir/’,);

my $message = $maildir->message(4);

$message->delete;

my $newmsg = Mail::Message->new(...);

Page 184: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $maildir = Mail::Box::Maildir->new folder => ‘./Maildir/’,);

my $message = $maildir->message(4);

$message->delete;

my $newmsg = Mail::Message->new(...);

Page 185: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $maildir = Mail::Box::Maildir->new folder => ‘./Maildir/’,);

my $message = $maildir->message(4);

$message->delete;

my $newmsg = Mail::Message->new(...);

$maildir->addMessage($newmsg);

Page 186: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $maildir = Mail::Box::Maildir->new folder => ‘./Maildir/’,);

my $message = $maildir->message(4);

$message->delete;

my $newmsg = Mail::Message->new(...);

$maildir->addMessage($newmsg);

Page 187: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $maildir = Mail::Box::Maildir->new folder => ‘./Maildir/’,);

my $message = $maildir->message(4);

$message->delete;

my $newmsg = Mail::Message->new(...);

$maildir->addMessage($newmsg);

$maildir->write;

Page 188: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

folders over the net

Page 189: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

subfolders

Page 190: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

threading

Page 191: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

delayed reading&

construction

Page 192: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

suggestion

Page 193: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

suggestion

if you need to manage mailboxes, just use it

Page 194: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

suggestion

if you need to manage mailboxes, just use it

there isn’t really any alternative

Page 195: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

suggestion

if you need to manage mailboxes, just use it

there isn’t really any alternative

unless you count...

Page 196: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

Email::Folder(and friends)

Page 197: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

a bunch of modules

Page 198: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

Email::Feature::Type

Page 199: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

Email::FolderType

Page 200: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!
Page 201: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

use Email::FolderType qw(folder_type);

Page 202: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

use Email::FolderType qw(folder_type);

Page 203: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

use Email::FolderType qw(folder_type);

my $type = folder_type(‘./Maildir’);

Page 204: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

use Email::FolderType qw(folder_type);

my $type = folder_type(‘./Maildir’);# => ‘Mbox’

Page 205: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

use Email::FolderType qw(folder_type);

my $type = folder_type(‘./Maildir’);# => ‘Mbox’

Page 206: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

use Email::FolderType qw(folder_type);

my $type = folder_type(‘./Maildir’);# => ‘Mbox’

my $type = folder_type(‘./Maildir/’);

Page 207: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

use Email::FolderType qw(folder_type);

my $type = folder_type(‘./Maildir’);# => ‘Mbox’

my $type = folder_type(‘./Maildir/’);# => ‘Maildir’

Page 208: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

use Email::FolderType qw(folder_type);

my $type = folder_type(‘./Maildir’);# => ‘Mbox’

my $type = folder_type(‘./Maildir/’);# => ‘Maildir’

Page 209: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

use Email::FolderType qw(folder_type);

my $type = folder_type(‘./Maildir’);# => ‘Mbox’

my $type = folder_type(‘./Maildir/’);# => ‘Maildir’

my $type = folder_type(‘./Maildir//’);

Page 210: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

use Email::FolderType qw(folder_type);

my $type = folder_type(‘./Maildir’);# => ‘Mbox’

my $type = folder_type(‘./Maildir/’);# => ‘Maildir’

my $type = folder_type(‘./Maildir//’);# => Ezmlm

Page 211: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

Email::Folder

Page 212: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

Email::Folder::Reader

Page 213: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!
Page 214: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $reader = Email::Folder->new(“./Maildir/”);

Page 215: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $reader = Email::Folder->new(“./Maildir/”);

Page 216: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $reader = Email::Folder->new(“./Maildir/”);

while (my $email = $reader->next_message) {

Page 217: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $reader = Email::Folder->new(“./Maildir/”);

while (my $email = $reader->next_message) { print “to delete!”

Page 218: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $reader = Email::Folder->new(“./Maildir/”);

while (my $email = $reader->next_message) { print “to delete!” if $email->header(‘from’) =~ /Laura/i;

Page 219: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $reader = Email::Folder->new(“./Maildir/”);

while (my $email = $reader->next_message) { print “to delete!” if $email->header(‘from’) =~ /Laura/i;}

Page 220: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

Email::Delete

Page 221: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $reader = Email::Folder->new(“./Maildir/”);

while (my $email = $reader->next_message) { $email->delete if $email->header(‘from’) =~ /Laura/i;}

Page 222: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $reader = Email::Folder->new(“./Maildir/”);

while (my $email = $reader->next_message) { $email->delete if $email->header(‘from’) =~ /Laura/i;}

NOT REAL CODE

Page 223: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!
Page 224: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

delete_message(

Page 225: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

delete_message(from => “./Maildir/”,

Page 226: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

delete_message(from => “./Maildir/”,matching => sub {

Page 227: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

delete_message(from => “./Maildir/”,matching => sub { shift->header(‘message-id’)

Page 228: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

delete_message(from => “./Maildir/”,matching => sub { shift->header(‘message-id’)

eq

Page 229: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

delete_message(from => “./Maildir/”,matching => sub { shift->header(‘message-id’)

eq$email->header(‘message-id’)

Page 230: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

delete_message(from => “./Maildir/”,matching => sub { shift->header(‘message-id’)

eq$email->header(‘message-id’)

},

Page 231: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

delete_message(from => “./Maildir/”,matching => sub { shift->header(‘message-id’)

eq$email->header(‘message-id’)

},);

Page 232: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!
Page 233: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $reader = Email::Folder->new(“./Maildir/”);

Page 234: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $reader = Email::Folder->new(“./Maildir/”);

Page 235: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $reader = Email::Folder->new(“./Maildir/”);

$saw_id{ $_->header(‘message-id’) } = 1

Page 236: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $reader = Email::Folder->new(“./Maildir/”);

$saw_id{ $_->header(‘message-id’) } = 1 while my $_ = $reader->next_message;

Page 237: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $reader = Email::Folder->new(“./Maildir/”);

$saw_id{ $_->header(‘message-id’) } = 1 while my $_ = $reader->next_message;

Page 238: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $reader = Email::Folder->new(“./Maildir/”);

$saw_id{ $_->header(‘message-id’) } = 1 while my $_ = $reader->next_message;

delete_message(

Page 239: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $reader = Email::Folder->new(“./Maildir/”);

$saw_id{ $_->header(‘message-id’) } = 1 while my $_ = $reader->next_message;

delete_message( from => “./Maildir”,

Page 240: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $reader = Email::Folder->new(“./Maildir/”);

$saw_id{ $_->header(‘message-id’) } = 1 while my $_ = $reader->next_message;

delete_message( from => “./Maildir”,

matching => sub { my $email = shift;

Page 241: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $reader = Email::Folder->new(“./Maildir/”);

$saw_id{ $_->header(‘message-id’) } = 1 while my $_ = $reader->next_message;

delete_message( from => “./Maildir”,

matching => sub { my $email = shift; $email->header(‘references’)

Page 242: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $reader = Email::Folder->new(“./Maildir/”);

$saw_id{ $_->header(‘message-id’) } = 1 while my $_ = $reader->next_message;

delete_message( from => “./Maildir”,

matching => sub { my $email = shift; $email->header(‘references’)

and

Page 243: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $reader = Email::Folder->new(“./Maildir/”);

$saw_id{ $_->header(‘message-id’) } = 1 while my $_ = $reader->next_message;

delete_message( from => “./Maildir”,

matching => sub { my $email = shift; $email->header(‘references’)

and! $saw_id{ $email->header(‘references’) }

Page 244: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $reader = Email::Folder->new(“./Maildir/”);

$saw_id{ $_->header(‘message-id’) } = 1 while my $_ = $reader->next_message;

delete_message( from => “./Maildir”,

matching => sub { my $email = shift; $email->header(‘references’)

and! $saw_id{ $email->header(‘references’) }

},

Page 245: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $reader = Email::Folder->new(“./Maildir/”);

$saw_id{ $_->header(‘message-id’) } = 1 while my $_ = $reader->next_message;

delete_message( from => “./Maildir”,

matching => sub { my $email = shift; $email->header(‘references’)

and! $saw_id{ $email->header(‘references’) }

},);

Page 246: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $reader = Email::Folder->new(“./Maildir/”);

$saw_id{ $_->header(‘message-id’) } = 1 while my $_ = $reader->next_message;

delete_message( from => “./Maildir”,

matching => sub { my $email = shift; $email->header(‘references’)

and! $saw_id{ $email->header(‘references’) }

},);

Page 247: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

so, we can delete

Page 248: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

(sort of)

Page 249: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

how do we add?

Page 250: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

Email::LocalDelivery

Page 251: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!
Page 252: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

@successes = Email::LocalDelivery->deliver(

Page 253: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

@successes = Email::LocalDelivery->deliver($string,

Page 254: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

@successes = Email::LocalDelivery->deliver($string,‘./Maildir/’,

Page 255: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

@successes = Email::LocalDelivery->deliver($string,‘./Maildir/’,‘/var/spool/mail/rjbs’,

Page 256: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

@successes = Email::LocalDelivery->deliver($string,‘./Maildir/’,‘/var/spool/mail/rjbs’,‘imap://[email protected]/INBOX’,

Page 257: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

@successes = Email::LocalDelivery->deliver($string,‘./Maildir/’,‘/var/spool/mail/rjbs’,‘imap://[email protected]/INBOX’,

);

Page 258: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

@successes = Email::LocalDelivery->deliver($string,‘./Maildir/’,‘/var/spool/mail/rjbs’,‘imap://[email protected]/INBOX’,

);

Page 259: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

can’t stream the message

must load it all into memory

and then copy it

Page 260: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

problems

Page 261: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

problems

the pieces don’t fit together

Page 262: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

problems

the pieces don’t fit together

can be very inefficient

Page 263: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

problems

the pieces don’t fit together

can be very inefficient

difficult to extend

Page 264: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

suggestion

Page 265: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

suggestion

fine for a quick one-off

Page 266: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

suggestion

fine for a quick one-off

not ready for prime time

Page 267: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

Net::Protocol

Page 268: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

Net::IMAP::Simple

Net::IMAP

Mail::IMAPClient

Net::POP3

Mail::POP3Client

Page 269: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

Sending Mail

Page 270: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

Mail::Send

Page 271: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

Mail::Mailer

Page 272: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!
Page 273: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $mailer = Mail::Mailer->new(‘sendmail’);

Page 274: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $mailer = Mail::Mailer->new(‘sendmail’);

Page 275: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $mailer = Mail::Mailer->new(‘sendmail’);

$mailer->open({

Page 276: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $mailer = Mail::Mailer->new(‘sendmail’);

$mailer->open({To => [ ‘boss@corp’, ‘boss2@corp’ ],

Page 277: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $mailer = Mail::Mailer->new(‘sendmail’);

$mailer->open({To => [ ‘boss@corp’, ‘boss2@corp’ ],Bcc => ‘the.ceo@corp’,

Page 278: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $mailer = Mail::Mailer->new(‘sendmail’);

$mailer->open({To => [ ‘boss@corp’, ‘boss2@corp’ ],Bcc => ‘the.ceo@corp’,Subject => ‘u sux’,

Page 279: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $mailer = Mail::Mailer->new(‘sendmail’);

$mailer->open({To => [ ‘boss@corp’, ‘boss2@corp’ ],Bcc => ‘the.ceo@corp’,Subject => ‘u sux’,

});

Page 280: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $mailer = Mail::Mailer->new(‘sendmail’);

$mailer->open({To => [ ‘boss@corp’, ‘boss2@corp’ ],Bcc => ‘the.ceo@corp’,Subject => ‘u sux’,

});

Page 281: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $mailer = Mail::Mailer->new(‘sendmail’);

$mailer->open({To => [ ‘boss@corp’, ‘boss2@corp’ ],Bcc => ‘the.ceo@corp’,Subject => ‘u sux’,

});

print $mailer "Body of message";

Page 282: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $mailer = Mail::Mailer->new(‘sendmail’);

$mailer->open({To => [ ‘boss@corp’, ‘boss2@corp’ ],Bcc => ‘the.ceo@corp’,Subject => ‘u sux’,

});

print $mailer "Body of message";

Page 283: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $mailer = Mail::Mailer->new(‘sendmail’);

$mailer->open({To => [ ‘boss@corp’, ‘boss2@corp’ ],Bcc => ‘the.ceo@corp’,Subject => ‘u sux’,

});

print $mailer "Body of message";

$mailer->close;

Page 284: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $mailer = Mail::Mailer->new(‘sendmail’);

$mailer->open({To => [ ‘boss@corp’, ‘boss2@corp’ ],Bcc => ‘the.ceo@corp’,Subject => ‘u sux’,

});

print $mailer "Body of message";

$mailer->close;# ...and it gets sent

Page 285: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

Mail::Sender

Page 286: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $sender = Mail::Sender->new({smtp => ‘smtp.haliburton.gov’,});

$sender->Open({ from => '[email protected]',

to => '[email protected]', subject => 'HTML test', ctype => "text/html", encoding => "7bit"}) or die $Mail::Sender::Error,"\n";

while (<$input>) {$sender->SendEx($_); # no encoding!};

$sender->Close();

Page 287: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

Mail::Sendmail

Page 288: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

use Mail::Sendmail;

sendmail( To => ‘[email protected]’, From => ‘[email protected]’, Subject => ‘STFU’, Body => $entire_message_body,) or die “sendmail: $Mail::Sendmail::error”;

Page 289: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

Mail::Transport(a Mail::Box Production)

Page 290: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!
Page 291: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $sender = Mail::Transport::SMTP->new(

Page 292: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $sender = Mail::Transport::SMTP->new( hostname => ‘nebu.fleet.zion.gov’,

Page 293: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $sender = Mail::Transport::SMTP->new( hostname => ‘nebu.fleet.zion.gov’, username => ‘[email protected]’,

Page 294: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $sender = Mail::Transport::SMTP->new( hostname => ‘nebu.fleet.zion.gov’, username => ‘[email protected]’, password => ‘viagra’,

Page 295: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $sender = Mail::Transport::SMTP->new( hostname => ‘nebu.fleet.zion.gov’, username => ‘[email protected]’, password => ‘viagra’,);

Page 296: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $sender = Mail::Transport::SMTP->new( hostname => ‘nebu.fleet.zion.gov’, username => ‘[email protected]’, password => ‘viagra’,);

Page 297: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $sender = Mail::Transport::SMTP->new( hostname => ‘nebu.fleet.zion.gov’, username => ‘[email protected]’, password => ‘viagra’,);

$sender->send(

Page 298: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $sender = Mail::Transport::SMTP->new( hostname => ‘nebu.fleet.zion.gov’, username => ‘[email protected]’, password => ‘viagra’,);

$sender->send($message,

Page 299: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $sender = Mail::Transport::SMTP->new( hostname => ‘nebu.fleet.zion.gov’, username => ‘[email protected]’, password => ‘viagra’,);

$sender->send($message,

from => $env_sender,

Page 300: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $sender = Mail::Transport::SMTP->new( hostname => ‘nebu.fleet.zion.gov’, username => ‘[email protected]’, password => ‘viagra’,);

$sender->send($message,

from => $env_sender, to => $env_rcpt,

Page 301: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $sender = Mail::Transport::SMTP->new( hostname => ‘nebu.fleet.zion.gov’, username => ‘[email protected]’, password => ‘viagra’,);

$sender->send($message,

from => $env_sender, to => $env_rcpt,);

Page 302: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

::Exim::Mailx::Qmail::SMTP::Sendmail

Page 303: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

Email::Send

Page 304: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!
Page 305: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $sender = Email::Send->new({

Page 306: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $sender = Email::Send->new({ mailer => ‘SMTP’,

Page 307: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $sender = Email::Send->new({ mailer => ‘SMTP’, mailer_args => [

Page 308: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $sender = Email::Send->new({ mailer => ‘SMTP’, mailer_args => [ Host => ‘sir-mx-a-lot.plusplus.com’,

Page 309: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $sender = Email::Send->new({ mailer => ‘SMTP’, mailer_args => [ Host => ‘sir-mx-a-lot.plusplus.com’, username => ‘rjbs’,

Page 310: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $sender = Email::Send->new({ mailer => ‘SMTP’, mailer_args => [ Host => ‘sir-mx-a-lot.plusplus.com’, username => ‘rjbs’, password => ‘g0t b4ckUPS’,

Page 311: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $sender = Email::Send->new({ mailer => ‘SMTP’, mailer_args => [ Host => ‘sir-mx-a-lot.plusplus.com’, username => ‘rjbs’, password => ‘g0t b4ckUPS’, ],

Page 312: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $sender = Email::Send->new({ mailer => ‘SMTP’, mailer_args => [ Host => ‘sir-mx-a-lot.plusplus.com’, username => ‘rjbs’, password => ‘g0t b4ckUPS’, ],});

Page 313: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $sender = Email::Send->new({ mailer => ‘SMTP’, mailer_args => [ Host => ‘sir-mx-a-lot.plusplus.com’, username => ‘rjbs’, password => ‘g0t b4ckUPS’, ],});

Page 314: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $sender = Email::Send->new({ mailer => ‘SMTP’, mailer_args => [ Host => ‘sir-mx-a-lot.plusplus.com’, username => ‘rjbs’, password => ‘g0t b4ckUPS’, ],});

my $rv = $sender->send($email);

Page 315: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $sender = Email::Send->new({ mailer => ‘SMTP’, mailer_args => [ Host => ‘sir-mx-a-lot.plusplus.com’, username => ‘rjbs’, password => ‘g0t b4ckUPS’, ],});

my $rv = $sender->send($email);

Page 316: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $sender = Email::Send->new({ mailer => ‘SMTP’, mailer_args => [ Host => ‘sir-mx-a-lot.plusplus.com’, username => ‘rjbs’, password => ‘g0t b4ckUPS’, ],});

my $rv = $sender->send($email);

unless ($rv) {

Page 317: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $sender = Email::Send->new({ mailer => ‘SMTP’, mailer_args => [ Host => ‘sir-mx-a-lot.plusplus.com’, username => ‘rjbs’, password => ‘g0t b4ckUPS’, ],});

my $rv = $sender->send($email);

unless ($rv) { die “failed to send: “ . $rv->string;

Page 318: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $sender = Email::Send->new({ mailer => ‘SMTP’, mailer_args => [ Host => ‘sir-mx-a-lot.plusplus.com’, username => ‘rjbs’, password => ‘g0t b4ckUPS’, ],});

my $rv = $sender->send($email);

unless ($rv) { die “failed to send: “ . $rv->string;}

Page 319: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

problems

Page 320: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

problems

Return::Value

Page 321: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

problems

Return::Value

no envelope sender

Page 322: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

problems

Return::Value

no envelope sender

awkward mailer/sender distinction

Page 323: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

problems

Return::Value

no envelope sender

awkward mailer/sender distinction

difficult to extend api

Page 324: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

problems

Return::Value

no envelope sender

awkward mailer/sender distinction

difficult to extend api

not enough API guaranteed for interchangeability

Page 325: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

Email::Sender?

Page 326: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!
Page 327: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $sender = Email::Sender::SMTP->new({

Page 328: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $sender = Email::Sender::SMTP->new({ host => ‘sir-mx-a-lot.plusplus.com’,

Page 329: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $sender = Email::Sender::SMTP->new({ host => ‘sir-mx-a-lot.plusplus.com’,

user => ‘rjbs’,

Page 330: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $sender = Email::Sender::SMTP->new({ host => ‘sir-mx-a-lot.plusplus.com’,

user => ‘rjbs’,pass => ‘wishiwereanoscarmeyerweiner’,

Page 331: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $sender = Email::Sender::SMTP->new({ host => ‘sir-mx-a-lot.plusplus.com’,

user => ‘rjbs’,pass => ‘wishiwereanoscarmeyerweiner’,

});

Page 332: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $sender = Email::Sender::SMTP->new({ host => ‘sir-mx-a-lot.plusplus.com’,

user => ‘rjbs’,pass => ‘wishiwereanoscarmeyerweiner’,

});

Page 333: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $sender = Email::Sender::SMTP->new({ host => ‘sir-mx-a-lot.plusplus.com’,

user => ‘rjbs’,pass => ‘wishiwereanoscarmeyerweiner’,

});

$sender->send(

Page 334: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $sender = Email::Sender::SMTP->new({ host => ‘sir-mx-a-lot.plusplus.com’,

user => ‘rjbs’,pass => ‘wishiwereanoscarmeyerweiner’,

});

$sender->send( $email,

Page 335: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $sender = Email::Sender::SMTP->new({ host => ‘sir-mx-a-lot.plusplus.com’,

user => ‘rjbs’,pass => ‘wishiwereanoscarmeyerweiner’,

});

$sender->send( $email, {

Page 336: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $sender = Email::Sender::SMTP->new({ host => ‘sir-mx-a-lot.plusplus.com’,

user => ‘rjbs’,pass => ‘wishiwereanoscarmeyerweiner’,

});

$sender->send( $email, { to => $env_rcpt, # or \@env_rcpts

Page 337: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $sender = Email::Sender::SMTP->new({ host => ‘sir-mx-a-lot.plusplus.com’,

user => ‘rjbs’,pass => ‘wishiwereanoscarmeyerweiner’,

});

$sender->send( $email, { to => $env_rcpt, # or \@env_rcpts from => $env_sender,

Page 338: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $sender = Email::Sender::SMTP->new({ host => ‘sir-mx-a-lot.plusplus.com’,

user => ‘rjbs’,pass => ‘wishiwereanoscarmeyerweiner’,

});

$sender->send( $email, { to => $env_rcpt, # or \@env_rcpts from => $env_sender, }

Page 339: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $sender = Email::Sender::SMTP->new({ host => ‘sir-mx-a-lot.plusplus.com’,

user => ‘rjbs’,pass => ‘wishiwereanoscarmeyerweiner’,

});

$sender->send( $email, { to => $env_rcpt, # or \@env_rcpts from => $env_sender, });

Page 340: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

Email::Sender::Simple->send( $email, { to => $recipient, from => $sender, },);

Page 341: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

Email::Sender::Simple->send( $email, { to => $recipient, from => $sender, },);

$ EMAIL_SENDER=SQLite ./your-program

Page 342: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

Filtering Mail

Page 343: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

Mail::Audit

Page 344: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!
Page 345: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $mail = Mail::Audit->new;

Page 346: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $mail = Mail::Audit->new;

Page 347: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $mail = Mail::Audit->new;

$mail->ignore if $mail->from_daemon;

Page 348: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $mail = Mail::Audit->new;

$mail->ignore if $mail->from_daemon;

Page 349: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $mail = Mail::Audit->new;

$mail->ignore if $mail->from_daemon;

$mail->accept(‘apologies’)

Page 350: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $mail = Mail::Audit->new;

$mail->ignore if $mail->from_daemon;

$mail->accept(‘apologies’) if $mail->subject =~ /sorry/i;

Page 351: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $mail = Mail::Audit->new;

$mail->ignore if $mail->from_daemon;

$mail->accept(‘apologies’) if $mail->subject =~ /sorry/i;

Page 352: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $mail = Mail::Audit->new;

$mail->ignore if $mail->from_daemon;

$mail->accept(‘apologies’) if $mail->subject =~ /sorry/i;

$mail->reject if $mail->from =~ /laura/i;

Page 353: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $mail = Mail::Audit->new;

$mail->ignore if $mail->from_daemon;

$mail->accept(‘apologies’) if $mail->subject =~ /sorry/i;

$mail->reject if $mail->from =~ /laura/i;

Page 354: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $mail = Mail::Audit->new;

$mail->ignore if $mail->from_daemon;

$mail->accept(‘apologies’) if $mail->subject =~ /sorry/i;

$mail->reject if $mail->from =~ /laura/i;

$mail->accept;

Page 355: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

Email::Filter

Page 356: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!
Page 357: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $mail = Email::Filter->new;

Page 358: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $mail = Email::Filter->new;

Page 359: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $mail = Email::Filter->new;

$mail->ignore if $mail->from_daemon;

Page 360: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $mail = Email::Filter->new;

$mail->ignore if $mail->from_daemon;

Page 361: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $mail = Email::Filter->new;

$mail->ignore if $mail->from_daemon;

$mail->accept(‘apologies’)

Page 362: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $mail = Email::Filter->new;

$mail->ignore if $mail->from_daemon;

$mail->accept(‘apologies’) if $mail->subject =~ /sorry/i;

Page 363: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $mail = Email::Filter->new;

$mail->ignore if $mail->from_daemon;

$mail->accept(‘apologies’) if $mail->subject =~ /sorry/i;

Page 364: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $mail = Email::Filter->new;

$mail->ignore if $mail->from_daemon;

$mail->accept(‘apologies’) if $mail->subject =~ /sorry/i;

$mail->reject if $mail->from =~ /laura/i;

Page 365: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $mail = Email::Filter->new;

$mail->ignore if $mail->from_daemon;

$mail->accept(‘apologies’) if $mail->subject =~ /sorry/i;

$mail->reject if $mail->from =~ /laura/i;

Page 366: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $mail = Email::Filter->new;

$mail->ignore if $mail->from_daemon;

$mail->accept(‘apologies’) if $mail->subject =~ /sorry/i;

$mail->reject if $mail->from =~ /laura/i;

$mail->accept;

Page 367: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

key differences

Page 368: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

key differences

Mail::Audit does more

Page 369: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

key differences

Mail::Audit does more

Mail::Audit is > 4x the size

Page 370: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

key differences

Mail::Audit does more

Mail::Audit is > 4x the size

Mail::Audit is totally insane

Page 371: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

key differences

Mail::Audit does more

Mail::Audit is > 4x the size

Mail::Audit is totally insane

Mail::Audit is better tested

Page 372: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

Mail::Procmail

Page 373: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

Mail::Procmail

It’s like Mail::Audit

Page 374: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

Mail::Procmail

It’s like Mail::Audit

but exports a bunch of subs

Page 375: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

Mail::Procmail

It’s like Mail::Audit

but exports a bunch of subs

can be made into a E::F plugin

Page 376: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

Mail::Procmail

It’s like Mail::Audit

but exports a bunch of subs

can be made into a E::F plugin

built-in logging

Page 377: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

Mail::Sort

Page 378: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

Mail::Sort

It’s like Mail::Audit

Page 379: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

Mail::Sort

It’s like Mail::Audit

but has lots more methods

Page 380: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

Mail::Sort

It’s like Mail::Audit

but has lots more methods

mostly for common matches

Page 381: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

Mail::Sort

It’s like Mail::Audit

but has lots more methods

mostly for common matches

could be some E::F plugins

Page 382: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

Email Addresses

Page 383: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

HATE!!

Page 384: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

Mail::Address

Email::Address

Page 385: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

Mail::Address

Email::Address

Page 386: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

Mail::Message::Field::

Address

Page 387: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

Email::Validaddress is well-formed

domain name is valid

domain is fqdn in a tld

domain actually exists

some per-domain rules

some fudging allowed

Page 388: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

Cool Stuff

Page 389: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

Email::Stuff

Page 390: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!
Page 391: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

Email::Stuff

Page 392: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

Email::Stuff ->from('Principal Skinner <[email protected]>')

Page 393: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

Email::Stuff ->from('Principal Skinner <[email protected]>') ->to('[email protected]')

Page 394: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

Email::Stuff ->from('Principal Skinner <[email protected]>') ->to('[email protected]') ->text_body(“Please see me after class.”)

Page 395: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

Email::Stuff ->from('Principal Skinner <[email protected]>') ->to('[email protected]') ->text_body(“Please see me after class.”) ->header(Keywords => “trouble”)

Page 396: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

Email::Stuff ->from('Principal Skinner <[email protected]>') ->to('[email protected]') ->text_body(“Please see me after class.”) ->header(Keywords => “trouble”) ->header(Keywords => “deep”)

Page 397: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

Email::Stuff ->from('Principal Skinner <[email protected]>') ->to('[email protected]') ->text_body(“Please see me after class.”) ->header(Keywords => “trouble”) ->header(Keywords => “deep”) ->attach(

Page 398: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

Email::Stuff ->from('Principal Skinner <[email protected]>') ->to('[email protected]') ->text_body(“Please see me after class.”) ->header(Keywords => “trouble”) ->header(Keywords => “deep”) ->attach( slurp(‘1099.pdf’),

Page 399: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

Email::Stuff ->from('Principal Skinner <[email protected]>') ->to('[email protected]') ->text_body(“Please see me after class.”) ->header(Keywords => “trouble”) ->header(Keywords => “deep”) ->attach( slurp(‘1099.pdf’), filename => 'dead_bunbun_proof.gif')

Page 400: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

Email::Stuff ->from('Principal Skinner <[email protected]>') ->to('[email protected]') ->text_body(“Please see me after class.”) ->header(Keywords => “trouble”) ->header(Keywords => “deep”) ->attach( slurp(‘1099.pdf’), filename => 'dead_bunbun_proof.gif')

->send;

Page 401: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

HTML Email(yeah, I know)

Page 402: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

Email::MIME::CreateHTML

Page 403: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!
Page 404: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!
Page 405: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

use Email::MIME::CreateHTML;

Page 406: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

use Email::MIME::CreateHTML;my $email = Email::MIME->create_html(

Page 407: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

use Email::MIME::CreateHTML;my $email = Email::MIME->create_html(

header => [

Page 408: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

use Email::MIME::CreateHTML;my $email = Email::MIME->create_html(

header => [ to => ‘[email protected]’,

Page 409: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

use Email::MIME::CreateHTML;my $email = Email::MIME->create_html(

header => [ to => ‘[email protected]’, from => ‘[email protected]’,

Page 410: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

use Email::MIME::CreateHTML;my $email = Email::MIME->create_html(

header => [ to => ‘[email protected]’, from => ‘[email protected]’, subject => ‘Happy Birthday!’,

Page 411: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

use Email::MIME::CreateHTML;my $email = Email::MIME->create_html(

header => [ to => ‘[email protected]’, from => ‘[email protected]’, subject => ‘Happy Birthday!’,],

Page 412: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

use Email::MIME::CreateHTML;my $email = Email::MIME->create_html(

header => [ to => ‘[email protected]’, from => ‘[email protected]’, subject => ‘Happy Birthday!’,],body => $html,

Page 413: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

use Email::MIME::CreateHTML;my $email = Email::MIME->create_html(

header => [ to => ‘[email protected]’, from => ‘[email protected]’, subject => ‘Happy Birthday!’,],body => $html,

);

Page 414: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

use Email::MIME::CreateHTML;my $email = Email::MIME->create_html(

header => [ to => ‘[email protected]’, from => ‘[email protected]’, subject => ‘Happy Birthday!’,],body => $html,text_body => $text,

);

Page 415: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $markdown = slurp(STDIN);

use Email::MIME::CreateHTML;my $email = Email::MIME->create_html(

header => [ to => ‘[email protected]’, from => ‘[email protected]’, subject => ‘Happy Birthday!’,],body => markdown($markdown),text_body => $markdown,

);

Page 416: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

use Email::StripMIME qw(strip_mime);

my $stripped_email = Email::MIME->new( strip_mime($email->as_string));

Page 417: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

Sifting Through MIME Parts

Page 418: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

Email::MIME::XPath

Page 419: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!
Page 420: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

use Email::MIME::XPath;

Page 421: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

use Email::MIME::XPath;

Page 422: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

use Email::MIME::XPath;

my ($part) = $email->xpath_findnodes(“//plain”);

Page 423: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

use Email::MIME::XPath;

my ($part) = $email->xpath_findnodes(“//plain”);

Page 424: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

use Email::MIME::XPath;

my ($part) = $email->xpath_findnodes(“//plain”);

my @images = $email->xpath_findnodes(

Page 425: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

use Email::MIME::XPath;

my ($part) = $email->xpath_findnodes(“//plain”);

my @images = $email->xpath_findnodes( “//png|//jpeg|//gif”

Page 426: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

use Email::MIME::XPath;

my ($part) = $email->xpath_findnodes(“//plain”);

my @images = $email->xpath_findnodes( “//png|//jpeg|//gif”);

Page 427: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

use Email::MIME::XPath;

my ($part) = $email->xpath_findnodes(“//plain”);

my @images = $email->xpath_findnodes( “//png|//jpeg|//gif”);

Page 428: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

use Email::MIME::XPath;

my ($part) = $email->xpath_findnodes(“//plain”);

my @images = $email->xpath_findnodes( “//png|//jpeg|//gif”);

my $address = $part->xpath_address;

Page 429: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

use Email::MIME::XPath;

my ($part) = $email->xpath_findnodes(“//plain”);

my @images = $email->xpath_findnodes( “//png|//jpeg|//gif”);

my $address = $part->xpath_address;die “error in part $address!”;

Page 430: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

Sending Signed Mail

Page 431: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!
Page 432: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $gpg = Mail::GPG->new(

Page 433: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $gpg = Mail::GPG->new( default_key_id => ‘12345678’,

Page 434: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $gpg = Mail::GPG->new( default_key_id => ‘12345678’,;

Page 435: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $gpg = Mail::GPG->new( default_key_id => ‘12345678’,;

Page 436: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $gpg = Mail::GPG->new( default_key_id => ‘12345678’,;

my $signed_entity = $gpg->mime_sign(

Page 437: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $gpg = Mail::GPG->new( default_key_id => ‘12345678’,;

my $signed_entity = $gpg->mime_sign( entity => $entity,

Page 438: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

my $gpg = Mail::GPG->new( default_key_id => ‘12345678’,;

my $signed_entity = $gpg->mime_sign( entity => $entity,);

Page 439: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

Managing Your Mail

Page 440: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!
Page 441: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

addressbook = App::Addex::AddressBook::Apple

Page 442: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

addressbook = App::Addex::AddressBook::Appleoutput = App::Addex::Output::Mutt

Page 443: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

addressbook = App::Addex::AddressBook::Appleoutput = App::Addex::Output::Muttoutput = App::Addex::Output::Procmail

Page 444: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

addressbook = App::Addex::AddressBook::Appleoutput = App::Addex::Output::Muttoutput = App::Addex::Output::Procmailoutput = App::Addex::Output::SpamAssassin

Page 445: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

addressbook = App::Addex::AddressBook::Appleoutput = App::Addex::Output::Muttoutput = App::Addex::Output::Procmailoutput = App::Addex::Output::SpamAssassin

Page 446: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

addressbook = App::Addex::AddressBook::Appleoutput = App::Addex::Output::Muttoutput = App::Addex::Output::Procmailoutput = App::Addex::Output::SpamAssassin

[App::Addex::Output::Mutt]

Page 447: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

addressbook = App::Addex::AddressBook::Appleoutput = App::Addex::Output::Muttoutput = App::Addex::Output::Procmailoutput = App::Addex::Output::SpamAssassin

[App::Addex::Output::Mutt]filename = mutt/alias-abook

Page 448: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

addressbook = App::Addex::AddressBook::Appleoutput = App::Addex::Output::Muttoutput = App::Addex::Output::Procmailoutput = App::Addex::Output::SpamAssassin

[App::Addex::Output::Mutt]filename = mutt/alias-abook

Page 449: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

addressbook = App::Addex::AddressBook::Appleoutput = App::Addex::Output::Muttoutput = App::Addex::Output::Procmailoutput = App::Addex::Output::SpamAssassin

[App::Addex::Output::Mutt]filename = mutt/alias-abook

[App::Addex::Output::Procmail]

Page 450: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

addressbook = App::Addex::AddressBook::Appleoutput = App::Addex::Output::Muttoutput = App::Addex::Output::Procmailoutput = App::Addex::Output::SpamAssassin

[App::Addex::Output::Mutt]filename = mutt/alias-abook

[App::Addex::Output::Procmail]filename = procmail/friends.rc

Page 451: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

addressbook = App::Addex::AddressBook::Appleoutput = App::Addex::Output::Muttoutput = App::Addex::Output::Procmailoutput = App::Addex::Output::SpamAssassin

[App::Addex::Output::Mutt]filename = mutt/alias-abook

[App::Addex::Output::Procmail]filename = procmail/friends.rc

Page 452: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

addressbook = App::Addex::AddressBook::Appleoutput = App::Addex::Output::Muttoutput = App::Addex::Output::Procmailoutput = App::Addex::Output::SpamAssassin

[App::Addex::Output::Mutt]filename = mutt/alias-abook

[App::Addex::Output::Procmail]filename = procmail/friends.rc

[App::Addex::Output::SpamAssassin]

Page 453: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

addressbook = App::Addex::AddressBook::Appleoutput = App::Addex::Output::Muttoutput = App::Addex::Output::Procmailoutput = App::Addex::Output::SpamAssassin

[App::Addex::Output::Mutt]filename = mutt/alias-abook

[App::Addex::Output::Procmail]filename = procmail/friends.rc

[App::Addex::Output::SpamAssassin]filename = spamassassin/whitelists-abook

Page 454: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

addressbook = App::Addex::AddressBook::Appleoutput = App::Addex::Output::Muttoutput = App::Addex::Output::Procmailoutput = App::Addex::Output::SpamAssassin

[App::Addex::Output::Mutt]filename = mutt/alias-abook

[App::Addex::Output::Procmail]filename = procmail/friends.rc

[App::Addex::Output::SpamAssassin]filename = spamassassin/whitelists-abook

Page 455: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

addressbook = App::Addex::AddressBook::Appleoutput = App::Addex::Output::Muttoutput = App::Addex::Output::Procmailoutput = App::Addex::Output::SpamAssassin

[App::Addex::Output::Mutt]filename = mutt/alias-abook

[App::Addex::Output::Procmail]filename = procmail/friends.rc

[App::Addex::Output::SpamAssassin]filename = spamassassin/whitelists-abook

Page 456: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!
Page 457: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!
Page 458: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

alias mollymillions [email protected] (Molly Millions)alias mollymillions-home [email protected] (Molly Millions)alias mollymillions-work [email protected] (Molly Millions)alias mollymillions-work-1 [email protected] (Molly Millions)

Page 459: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

alias mollymillions [email protected] (Molly Millions)alias mollymillions-home [email protected] (Molly Millions)alias mollymillions-work [email protected] (Molly Millions)alias mollymillions-work-1 [email protected] (Molly Millions)

mailboxes =friends.molly

Page 460: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

alias mollymillions [email protected] (Molly Millions)alias mollymillions-home [email protected] (Molly Millions)alias mollymillions-work [email protected] (Molly Millions)alias mollymillions-work-1 [email protected] (Molly Millions)

mailboxes =friends.molly

save-hook [email protected] =friends.mollysave-hook [email protected] =friends.mollysave-hook [email protected] =friends.molly

Page 461: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

alias mollymillions [email protected] (Molly Millions)alias mollymillions-home [email protected] (Molly Millions)alias mollymillions-work [email protected] (Molly Millions)alias mollymillions-work-1 [email protected] (Molly Millions)

send-hook [email protected] set signature="~/.sig/ninja"send-hook [email protected] set signature="~/.sig/ninja"send-hook [email protected] set signature="~/.sig/ninja"

mailboxes =friends.molly

save-hook [email protected] =friends.mollysave-hook [email protected] =friends.mollysave-hook [email protected] =friends.molly

Page 462: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!
Page 463: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

:0* From:.*[email protected]/

:0* From:.*[email protected]/

:0* From:.*[email protected]/

Page 464: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

:0* From:.*[email protected]/

:0* From:.*[email protected]/

:0* From:.*[email protected]/

whitelist_from [email protected]_from [email protected]_from [email protected]

Page 465: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

The Future

Page 466: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

Email::Corpus

Page 467: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

Email::Corpus::Email

Page 468: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

Email::Corpus::Addr

Page 469: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

Email::KB::Headers

Page 470: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

Metadata Plugin

Page 471: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

Bounce Classifier

Page 472: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

http://emailproject.perl.org/

[email protected]

Page 473: How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

ThankYou!