Download - How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!

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!