■ 参考にしたWeb
・Email::Sender:メールを送信する
■ テキストメールを送信する
※ ヘッダ、本文を手動でISO_2022_JPエンコード
#!/usr/bin/perl use strict; use warnings; use utf8; use Email::MIME; use Email::Sender::Transport::SMTP; use Email::Sender::Simple qw(sendmail); use Encode; binmode(STDIN, ":utf8"); binmode(STDOUT, ":utf8"); binmode(STDERR, ":utf8"); my $email = Email::MIME->create( header => [ From => encode('MIME-Header-ISO_2022_JP', '"送信者名" <my_name@example.com>'), To => encode('MIME-Header-ISO_2022_JP', '"受信者名" <rcpt_name@example.com>'), Subject => encode('MIME-Header-ISO_2022_JP', 'テストメール'), ], attributes => { content_type => 'text/plain', charset => 'ISO-2022-JP', encoding => '7bit', }, body => encode('iso-2022-jp' => "これはテストメールの\n本文です。"), ); sendmail($email, { transport => $transport });
※自動エンコードを使う。但し、ヘッダは強制的にUTF8エンコードされてしまう。(Email::MIME 1.9以降対応版)
#!/usr/bin/perl use strict; use warnings; use utf8; use Email::MIME; use Email::Sender::Transport::SMTP; use Email::Sender::Simple qw(sendmail); use Encode; binmode(STDIN, ":utf8"); binmode(STDOUT, ":utf8"); binmode(STDERR, ":utf8"); # Email::MIME 1.9以降の場合、自動的にエンコード変換される # (但し、ヘッダは強制的にutf8エンコードされる) my $email = Email::MIME->create( header_str => [ From => '"送信者名" <my_name@example.com>', To => '"受信者名" <rcpt_name@example.com>', Subject => 'テストメール', ], attributes => { content_type => 'text/plain', charset => 'ISO-2022-JP', encoding => '7bit', }, body_str => encode('iso-2022-jp' => "これはテストメールの\n本文です。"), ); my $transport = Email::Sender::Transport::SMTP->new( host => 'smtp.example.com', port => 587, ); sendmail($email, { transport => $transport });
■ 添付ファイルを付ける場合
#!/usr/bin/perl
use strict;
use warnings;
use utf8;
use Email::MIME;
use Email::Sender::Transport::SMTP;
use Email::Sender::Simple qw(sendmail);
use Path::Class;
use Encode;
binmode(STDIN, ":utf8");
binmode(STDOUT, ":utf8");
binmode(STDERR, ":utf8");
my $email = Email::MIME->create(
header => [
From => encode('MIME-Header-ISO_2022_JP', '"送信者名" <my_name@example.com>'),
To => encode('MIME-Header-ISO_2022_JP', '"受信者名" <rcpt_name@example.com>'),
Subject => encode('MIME-Header-ISO_2022_JP', 'テストメール'),
],
parts => [
Email::MIME->create(
attributes => {
content_type => 'text/plain',
charset => 'ISO-2022-JP',
encoding => '7bit',
},
body => encode('iso-2022-jp' => "これはテストメールの\n本文です。"),
),
Email::MIME->create(
attributes => {
content_type => 'text/plain',
name => 'test.txt',
filename => 'test.txt',
encoding => 'base64',
disposition => 'attachment',
},
body => scalar file('test.txt')->slurp,
),
]
);
my $transport = Email::Sender::Transport::SMTP->new(
host => 'smtp.example.com',
port => 587,
);
sendmail($email, { transport => $transport });
なお、添付ファイルはあらかじめbase64でエンコードしておくこと。
$ base64 test.txt.org > test.txt