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.
29. use Email::Simple;
my $email = Email::Simple->new($string);
use Email::Simple::Creator;
my $email = Email::Simple->create(
30. use Email::Simple;
my $email = Email::Simple->new($string);
use Email::Simple::Creator;
my $email = Email::Simple->create(
header => [
31. use Email::Simple;
my $email = Email::Simple->new($string);
use Email::Simple::Creator;
my $email = Email::Simple->create(
header => [
To => ‘rjbs@cpan.org’,
32. use Email::Simple;
my $email = Email::Simple->new($string);
use Email::Simple::Creator;
my $email = Email::Simple->create(
header => [
To => ‘rjbs@cpan.org’,
From => ‘IRS <the.man@irs.gov>’,
33. use Email::Simple;
my $email = Email::Simple->new($string);
use Email::Simple::Creator;
my $email = Email::Simple->create(
header => [
To => ‘rjbs@cpan.org’,
From => ‘IRS <the.man@irs.gov>’,
Subject => ‘Please See Me’,
34. use Email::Simple;
my $email = Email::Simple->new($string);
use Email::Simple::Creator;
my $email = Email::Simple->create(
header => [
To => ‘rjbs@cpan.org’,
From => ‘IRS <the.man@irs.gov>’,
Subject => ‘Please See Me’,
Keyword => ‘1099’,
35. use Email::Simple;
my $email = Email::Simple->new($string);
use Email::Simple::Creator;
my $email = Email::Simple->create(
header => [
To => ‘rjbs@cpan.org’,
From => ‘IRS <the.man@irs.gov>’,
Subject => ‘Please See Me’,
Keyword => ‘1099’,
Keyword => ‘1040’,
36. use Email::Simple;
my $email = Email::Simple->new($string);
use Email::Simple::Creator;
my $email = Email::Simple->create(
header => [
To => ‘rjbs@cpan.org’,
From => ‘IRS <the.man@irs.gov>’,
Subject => ‘Please See Me’,
Keyword => ‘1099’,
Keyword => ‘1040’,
],
37. use Email::Simple;
my $email = Email::Simple->new($string);
use Email::Simple::Creator;
my $email = Email::Simple->create(
header => [
To => ‘rjbs@cpan.org’,
From => ‘IRS <the.man@irs.gov>’,
Subject => ‘Please See Me’,
Keyword => ‘1099’,
Keyword => ‘1040’,
],
body => “[ insert threatening text here ]”
38. use Email::Simple;
my $email = Email::Simple->new($string);
use Email::Simple::Creator;
my $email = Email::Simple->create(
header => [
To => ‘rjbs@cpan.org’,
From => ‘IRS <the.man@irs.gov>’,
Subject => ‘Please See Me’,
Keyword => ‘1099’,
Keyword => ‘1040’,
],
body => “[ insert threatening text here ]”
);
49. use Email::Simple;
my $email = Email::Simple->new( $string );
$email->body_set( $new_body );
use Email::Simple::FromHandle;
50. use Email::Simple;
my $email = Email::Simple->new( $string );
$email->body_set( $new_body );
use Email::Simple::FromHandle;
my $email = Email::SimpleFromHandle->new(
51. 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
52. 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
);
53. 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);
56. my $email = Email::MIME->new($string);
use Email::MIME::Creator;
57. my $email = Email::MIME->new($string);
use Email::MIME::Creator;
my $email = Email::MIME->create(
58. my $email = Email::MIME->new($string);
use Email::MIME::Creator;
my $email = Email::MIME->create(
header => [
59. my $email = Email::MIME->new($string);
use Email::MIME::Creator;
my $email = Email::MIME->create(
header => [
To => ‘rjbs@cpan.org’,
60. my $email = Email::MIME->new($string);
use Email::MIME::Creator;
my $email = Email::MIME->create(
header => [
To => ‘rjbs@cpan.org’,
From => ‘IRS <the.man@irs.gov>’,
61. my $email = Email::MIME->new($string);
use Email::MIME::Creator;
my $email = Email::MIME->create(
header => [
To => ‘rjbs@cpan.org’,
From => ‘IRS <the.man@irs.gov>’,
Subject => ‘Please See Me’,
62. my $email = Email::MIME->new($string);
use Email::MIME::Creator;
my $email = Email::MIME->create(
header => [
To => ‘rjbs@cpan.org’,
From => ‘IRS <the.man@irs.gov>’,
Subject => ‘Please See Me’,
],
63. my $email = Email::MIME->new($string);
use Email::MIME::Creator;
my $email = Email::MIME->create(
header => [
To => ‘rjbs@cpan.org’,
From => ‘IRS <the.man@irs.gov>’,
Subject => ‘Please See Me’,
],
attributes =>
64. my $email = Email::MIME->new($string);
use Email::MIME::Creator;
my $email = Email::MIME->create(
header => [
To => ‘rjbs@cpan.org’,
From => ‘IRS <the.man@irs.gov>’,
Subject => ‘Please See Me’,
],
attributes =>
{ content_type => ‘multipart/mixed’ },
65. my $email = Email::MIME->new($string);
use Email::MIME::Creator;
my $email = Email::MIME->create(
header => [
To => ‘rjbs@cpan.org’,
From => ‘IRS <the.man@irs.gov>’,
Subject => ‘Please See Me’,
],
attributes =>
{ content_type => ‘multipart/mixed’ },
parts => [
66. my $email = Email::MIME->new($string);
use Email::MIME::Creator;
my $email = Email::MIME->create(
header => [
To => ‘rjbs@cpan.org’,
From => ‘IRS <the.man@irs.gov>’,
Subject => ‘Please See Me’,
],
attributes =>
{ content_type => ‘multipart/mixed’ },
parts => [
Email::MIME->create(...),
67. my $email = Email::MIME->new($string);
use Email::MIME::Creator;
my $email = Email::MIME->create(
header => [
To => ‘rjbs@cpan.org’,
From => ‘IRS <the.man@irs.gov>’,
Subject => ‘Please See Me’,
],
attributes =>
{ content_type => ‘multipart/mixed’ },
parts => [
Email::MIME->create(...),
Email::MIME->create(...),
68. my $email = Email::MIME->new($string);
use Email::MIME::Creator;
my $email = Email::MIME->create(
header => [
To => ‘rjbs@cpan.org’,
From => ‘IRS <the.man@irs.gov>’,
Subject => ‘Please See Me’,
],
attributes =>
{ content_type => ‘multipart/mixed’ },
parts => [
Email::MIME->create(...),
Email::MIME->create(...),
],
69. my $email = Email::MIME->new($string);
use Email::MIME::Creator;
my $email = Email::MIME->create(
header => [
To => ‘rjbs@cpan.org’,
From => ‘IRS <the.man@irs.gov>’,
Subject => ‘Please See Me’,
],
attributes =>
{ content_type => ‘multipart/mixed’ },
parts => [
Email::MIME->create(...),
Email::MIME->create(...),
],
);
82. my $entity = MIME::Entity->new($input_handle);
my $entity = MIME::Entity->new(@lines);
83. my $entity = MIME::Entity->new($input_handle);
my $entity = MIME::Entity->new(@lines);
my $entity = MIME::Entity->build(
84. my $entity = MIME::Entity->new($input_handle);
my $entity = MIME::Entity->new(@lines);
my $entity = MIME::Entity->build(
To => ‘rjbs@cpan.org’,
85. my $entity = MIME::Entity->new($input_handle);
my $entity = MIME::Entity->new(@lines);
my $entity = MIME::Entity->build(
To => ‘rjbs@cpan.org’,
From => ‘IRS <the.man@irs.gov>’,
86. my $entity = MIME::Entity->new($input_handle);
my $entity = MIME::Entity->new(@lines);
my $entity = MIME::Entity->build(
To => ‘rjbs@cpan.org’,
From => ‘IRS <the.man@irs.gov>’,
Subject => ‘Please See Me’,
87. my $entity = MIME::Entity->new($input_handle);
my $entity = MIME::Entity->new(@lines);
my $entity = MIME::Entity->build(
To => ‘rjbs@cpan.org’,
From => ‘IRS <the.man@irs.gov>’,
Subject => ‘Please See Me’,
‘Keyword:’ => [ 1099, 1040 ],
88. my $entity = MIME::Entity->new($input_handle);
my $entity = MIME::Entity->new(@lines);
my $entity = MIME::Entity->build(
To => ‘rjbs@cpan.org’,
From => ‘IRS <the.man@irs.gov>’,
Subject => ‘Please See Me’,
‘Keyword:’ => [ 1099, 1040 ],
Data => [ “This might be an audit.” ],
89. my $entity = MIME::Entity->new($input_handle);
my $entity = MIME::Entity->new(@lines);
my $entity = MIME::Entity->build(
To => ‘rjbs@cpan.org’,
From => ‘IRS <the.man@irs.gov>’,
Subject => ‘Please See Me’,
‘Keyword:’ => [ 1099, 1040 ],
Data => [ “This might be an audit.” ],
);
90. my $entity = MIME::Entity->new($input_handle);
my $entity = MIME::Entity->new(@lines);
my $entity = MIME::Entity->build(
To => ‘rjbs@cpan.org’,
From => ‘IRS <the.man@irs.gov>’,
Subject => ‘Please See Me’,
‘Keyword:’ => [ 1099, 1040 ],
Data => [ “This might be an audit.” ],
);
$entity->attach(
91. my $entity = MIME::Entity->new($input_handle);
my $entity = MIME::Entity->new(@lines);
my $entity = MIME::Entity->build(
To => ‘rjbs@cpan.org’,
From => ‘IRS <the.man@irs.gov>’,
Subject => ‘Please See Me’,
‘Keyword:’ => [ 1099, 1040 ],
Data => [ “This might be an audit.” ],
);
$entity->attach(
Path => ‘./reports/audit-results.pdf’,
92. my $entity = MIME::Entity->new($input_handle);
my $entity = MIME::Entity->new(@lines);
my $entity = MIME::Entity->build(
To => ‘rjbs@cpan.org’,
From => ‘IRS <the.man@irs.gov>’,
Subject => ‘Please See Me’,
‘Keyword:’ => [ 1099, 1040 ],
Data => [ “This might be an audit.” ],
);
$entity->attach(
Path => ‘./reports/audit-results.pdf’,
Type => ‘application/pdf’,
93. my $entity = MIME::Entity->new($input_handle);
my $entity = MIME::Entity->new(@lines);
my $entity = MIME::Entity->build(
To => ‘rjbs@cpan.org’,
From => ‘IRS <the.man@irs.gov>’,
Subject => ‘Please See Me’,
‘Keyword:’ => [ 1099, 1040 ],
Data => [ “This might be an audit.” ],
);
$entity->attach(
Path => ‘./reports/audit-results.pdf’,
Type => ‘application/pdf’,
);
100. my $mail = Mail::Message->read($input_handle);
101. my $mail = Mail::Message->read($input_handle);
my $mail = Mail::Message->build(
102. my $mail = Mail::Message->read($input_handle);
my $mail = Mail::Message->build(
To => ‘rjbs@cpan.org’,
103. my $mail = Mail::Message->read($input_handle);
my $mail = Mail::Message->build(
To => ‘rjbs@cpan.org’,
From => ‘IRS <the.man@irs.gov>’,
104. my $mail = Mail::Message->read($input_handle);
my $mail = Mail::Message->build(
To => ‘rjbs@cpan.org’,
From => ‘IRS <the.man@irs.gov>’,
Subject => ‘Please See Me’,
105. my $mail = Mail::Message->read($input_handle);
my $mail = Mail::Message->build(
To => ‘rjbs@cpan.org’,
From => ‘IRS <the.man@irs.gov>’,
Subject => ‘Please See Me’,
Keyword => 1099,
106. my $mail = Mail::Message->read($input_handle);
my $mail = Mail::Message->build(
To => ‘rjbs@cpan.org’,
From => ‘IRS <the.man@irs.gov>’,
Subject => ‘Please See Me’,
Keyword => 1099,
Keyword => 1040,
107. my $mail = Mail::Message->read($input_handle);
my $mail = Mail::Message->build(
To => ‘rjbs@cpan.org’,
From => ‘IRS <the.man@irs.gov>’,
Subject => ‘Please See Me’,
Keyword => 1099,
Keyword => 1040,
108. my $mail = Mail::Message->read($input_handle);
my $mail = Mail::Message->build(
To => ‘rjbs@cpan.org’,
From => ‘IRS <the.man@irs.gov>’,
Subject => ‘Please See Me’,
Keyword => 1099,
Keyword => 1040,
data => “This might be an audit.n”,
109. my $mail = Mail::Message->read($input_handle);
my $mail = Mail::Message->build(
To => ‘rjbs@cpan.org’,
From => ‘IRS <the.man@irs.gov>’,
Subject => ‘Please See Me’,
Keyword => 1099,
Keyword => 1040,
data => “This might be an audit.n”,
file => ‘./reports/audit-results.pdf’,
110. my $mail = Mail::Message->read($input_handle);
my $mail = Mail::Message->build(
To => ‘rjbs@cpan.org’,
From => ‘IRS <the.man@irs.gov>’,
Subject => ‘Please See Me’,
Keyword => 1099,
Keyword => 1040,
data => “This might be an audit.n”,
file => ‘./reports/audit-results.pdf’,
);
139. my $abstract = Email::Abstract->new($thing);
$abstract->get_header(‘Subject’);
140. my $abstract = Email::Abstract->new($thing);
$abstract->get_header(‘Subject’);
$abstract->set_header(Subject => ‘Foo!’);
141. my $abstract = Email::Abstract->new($thing);
$abstract->get_header(‘Subject’);
$abstract->set_header(Subject => ‘Foo!’);
142. my $abstract = Email::Abstract->new($thing);
$abstract->get_header(‘Subject’);
$abstract->set_header(Subject => ‘Foo!’);
$abstract->get_body;
143. 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!’);
144. 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!’);
145. 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;
146. 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;
147. 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’);
163. suggestion
learn the basics of Mail::Message
use it if you know you’ll need to use
more of Mail::Box in the future
164. suggestion
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
168. suggestion
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
171. 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.
221. my $reader = Email::Folder->new(“./Maildir/”);
while (my $email = $reader->next_message) {
$email->delete
if $email->header(‘from’) =~ /Laura/i;
}
222. E
D
O
C
my $reader = Email::Folder->new(“./Maildir/”);
L
A
while (my $email = $reader->next_message) {
E
R
$email->delete
T
if $email->header(‘from’) =~ /Laura/i;
O
}
N
235. my $reader = Email::Folder->new(“./Maildir/”);
$saw_id{ $_->header(‘message-id’) } = 1
236. my $reader = Email::Folder->new(“./Maildir/”);
$saw_id{ $_->header(‘message-id’) } = 1
while my $_ = $reader->next_message;
237. my $reader = Email::Folder->new(“./Maildir/”);
$saw_id{ $_->header(‘message-id’) } = 1
while my $_ = $reader->next_message;
238. my $reader = Email::Folder->new(“./Maildir/”);
$saw_id{ $_->header(‘message-id’) } = 1
while my $_ = $reader->next_message;
delete_message(
239. my $reader = Email::Folder->new(“./Maildir/”);
$saw_id{ $_->header(‘message-id’) } = 1
while my $_ = $reader->next_message;
delete_message(
from => “./Maildir”,
240. 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;
241. 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’)
242. 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
243. 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’) }
244. 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’) }
},
245. 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’) }
},
);
246. 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’) }
},
);
288. use Mail::Sendmail;
sendmail(
To => ‘guy@2nd.row.org’,
From => ‘rjbs@cpan.org’,
Subject => ‘STFU’,
Body => $entire_message_body,
) or die “sendmail: $Mail::Sendmail::error”;
347. my $mail = Mail::Audit->new;
$mail->ignore if $mail->from_daemon;
348. my $mail = Mail::Audit->new;
$mail->ignore if $mail->from_daemon;
349. my $mail = Mail::Audit->new;
$mail->ignore if $mail->from_daemon;
$mail->accept(‘apologies’)
350. my $mail = Mail::Audit->new;
$mail->ignore if $mail->from_daemon;
$mail->accept(‘apologies’)
if $mail->subject =~ /sorry/i;
351. my $mail = Mail::Audit->new;
$mail->ignore if $mail->from_daemon;
$mail->accept(‘apologies’)
if $mail->subject =~ /sorry/i;
352. 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;
353. 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;
354. 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;
359. my $mail = Email::Filter->new;
$mail->ignore if $mail->from_daemon;
360. my $mail = Email::Filter->new;
$mail->ignore if $mail->from_daemon;
361. my $mail = Email::Filter->new;
$mail->ignore if $mail->from_daemon;
$mail->accept(‘apologies’)
362. my $mail = Email::Filter->new;
$mail->ignore if $mail->from_daemon;
$mail->accept(‘apologies’)
if $mail->subject =~ /sorry/i;
363. my $mail = Email::Filter->new;
$mail->ignore if $mail->from_daemon;
$mail->accept(‘apologies’)
if $mail->subject =~ /sorry/i;
364. 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;
365. 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;
366. 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;
387. Email::Valid
address is well-formed domain actually exists
domain name is valid some per-domain rules
domain is fqdn in a tld some fudging allowed
394. Email::Stuff
->from('Principal Skinner <seymore@se.edu>')
->to('rjbs@cpan.org')
->text_body(“Please see me after class.”)
395. Email::Stuff
->from('Principal Skinner <seymore@se.edu>')
->to('rjbs@cpan.org')
->text_body(“Please see me after class.”)
->header(Keywords => “trouble”)
396. Email::Stuff
->from('Principal Skinner <seymore@se.edu>')
->to('rjbs@cpan.org')
->text_body(“Please see me after class.”)
->header(Keywords => “trouble”)
->header(Keywords => “deep”)
397. Email::Stuff
->from('Principal Skinner <seymore@se.edu>')
->to('rjbs@cpan.org')
->text_body(“Please see me after class.”)
->header(Keywords => “trouble”)
->header(Keywords => “deep”)
->attach(
398. Email::Stuff
->from('Principal Skinner <seymore@se.edu>')
->to('rjbs@cpan.org')
->text_body(“Please see me after class.”)
->header(Keywords => “trouble”)
->header(Keywords => “deep”)
->attach(
slurp(‘1099.pdf’),
399. Email::Stuff
->from('Principal Skinner <seymore@se.edu>')
->to('rjbs@cpan.org')
->text_body(“Please see me after class.”)
->header(Keywords => “trouble”)
->header(Keywords => “deep”)
->attach(
slurp(‘1099.pdf’),
filename => 'dead_bunbun_proof.gif')
400. Email::Stuff
->from('Principal Skinner <seymore@se.edu>')
->to('rjbs@cpan.org')
->text_body(“Please see me after class.”)
->header(Keywords => “trouble”)
->header(Keywords => “deep”)
->attach(
slurp(‘1099.pdf’),
filename => 'dead_bunbun_proof.gif')
->send;
410. use Email::MIME::CreateHTML;
my $email = Email::MIME->create_html(
header => [
to => ‘mom@aol.com’,
from => ‘rjbs@cpan.org’,
subject => ‘Happy Birthday!’,
411. use Email::MIME::CreateHTML;
my $email = Email::MIME->create_html(
header => [
to => ‘mom@aol.com’,
from => ‘rjbs@cpan.org’,
subject => ‘Happy Birthday!’,
],
412. use Email::MIME::CreateHTML;
my $email = Email::MIME->create_html(
header => [
to => ‘mom@aol.com’,
from => ‘rjbs@cpan.org’,
subject => ‘Happy Birthday!’,
],
body => $html,
413. use Email::MIME::CreateHTML;
my $email = Email::MIME->create_html(
header => [
to => ‘mom@aol.com’,
from => ‘rjbs@cpan.org’,
subject => ‘Happy Birthday!’,
],
body => $html,
);
414. use Email::MIME::CreateHTML;
my $email = Email::MIME->create_html(
header => [
to => ‘mom@aol.com’,
from => ‘rjbs@cpan.org’,
subject => ‘Happy Birthday!’,
],
body => $html,
text_body => $text,
);
415. my $markdown = slurp(STDIN);
use Email::MIME::CreateHTML;
my $email = Email::MIME->create_html(
header => [
to => ‘mom@aol.com’,
from => ‘rjbs@cpan.org’,
subject => ‘Happy Birthday!’,
],
body => markdown($markdown),
text_body => $markdown,
);
428. use Email::MIME::XPath;
my ($part) = $email->xpath_findnodes(“//plain”);
my @images = $email->xpath_findnodes(
“//png|//jpeg|//gif”
);
my $address = $part->xpath_address;
429. 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!”;