タケユー・ウェブ日報

Ruby on Rails や Flutter といったWeb・モバイルアプリ技術を武器にお客様のビジネス立ち上げを支援する、タケユー・ウェブ株式会社の技術ブログです。

MT::Mailで添付ファイル付きメールを送信する

MT::Mail自体には添付ファイル付のメールを組み立てる機能はないが、自分でヘッダーやBodyを作成してパラメータとして渡すことで、送信することはできる。

確認環境

MT5でも動くと思う・・・たぶん・・・

サンプルコード

試しにmtのreadme.htmlとロゴを添付している。便宜置き換えのこと。

my $recipient   = 'taro@test.host';
my $subject     = '添付テスト';
my $text        = "ファイル送信テスト\nほげほげ";

require MIME::Entity;
my $mime = MIME::Entity->build(
        Type    => 'text/plain;charset="iso-2022-jp"',
        Data    => [$text],
        Encoding    => "7bit",
);
$mime->attach(
        Path     => '/var/www/html/mt60/mt/readme.html',
        Type     => 'text/html',
        Encoding => '-SUGGEST'
);
$mime->attach(
        Path     => '/var/www/html/mt60/mt/mt-static/images/chromeless/mt_logo.png',
        Type     => 'image/gif',
        Encoding => '-SUGGEST'
);
my $head = $mime->head;
my %header = (
    To              => $recipient,
    Subject         => $subject,
    'Content-Type'  => $head->get( 'Content-Type' ),
);
my $body = $mime->stringify_body;

MT::Mail->send(\%header, $body)
    or die MT::Mail->errstr;