1. ホーム
  2. スクリプト・コラム
  3. パール

PerlでMIME::Liteを使ったメール送信の例

2022-02-02 02:41:23

スクリプトをデプロイするとき、プログラムの実行がどうなっているのか知りたいし、実行結果も知りたい、そうすればもっと気分が良くなるだろう?

実は、perlを使ってメールを送る方法はたくさんあって、cpanでmailキーワードで検索するといっぱい出てきますが、実践してみると、メールを送るのに使うMIME::Liteはまだ非常に適切で、最も信じられないのは、ああ、簡単に添付ファイル付きのメールを送ることができるようになることです。

MIME::Liteを使ったメール送信の例を紹介します。

cpanのトップに使い方の詳細があります(http://search.cpan.org/~rjbs/MIME-Lite-3.028/lib/MIME/Lite.pm)。

1 つ目は、sendmail などのシステム独自のメールプログラムを使用する方法で、最も簡単です。

もう一つはsmtpを使ったもので、NetEaseの163メールボックスを例にとって説明します。

まずは例として、デフォルトの送信方法(sendmail)を紹介します。

コピーコード コードは以下の通りです。

#! /usr/bin/perl -w
use MIME::Lite;
my $msg = MIME::Lite->new(
From => '[email protected]',

To => '[email protected]',

Cc => '[email protected], [email protected]',
Subject => 'hello, my first mail from chenqing.org',
Type => 'multipart/mixed',
Data =>' other data'
);

$msg->attach(
Type => 'image/png',
Disposition => 'attachment',
Filename => 'other.png',
Path => '/home/king/perl/logo.png'
);

$msg->send;


html形式でもう一枚。

コピーコード コードは以下の通りです。

#! /usr/bin/perl -w
use MIME::Lite;
my $msg = MIME::Lite->new(
From => '[email protected]',

To => '[email protected]',

Cc => '[email protected], [email protected]',
Subject => 'hello, my first mail from chenqing.org',
Type => 'multipart/mixed',
Data =>' other data'
);

$msg->attach(
Type => 'text/html',
Data => qq{
<body>
This is my <b>good</b> image:
<img src="cid:logo.png">
</body>
},
);

$msg->attach(
Type => 'image/png',
Disposition => 'attachment',
Filename => 'other.png',

Id => 'logo.png',
Path => '/home/king/perl/logo.png'
);

$msg->send;

ここでは、smtpで送信する方法について説明します。

コピーコード コードは以下の通りです。

#! /usr/bin/perl -w

use MIME::Lite;

use MIME::Base64;
use Authen::SASL;
my $host='smtp.163.com';
my $pass='yourpass';
my $user='[email protected]';
my $msg = MIME::Lite->new(
From => '[email protected]',

To => '[email protected]',

Cc => '[email protected], [email protected]',
Subject => 'hello, my first mail from chenqing.org',
Type => 'multipart/mixed',
Data =>' other data'
);

$msg->attach(
Type => 'text/html',
Data => qq{
<body>
This is my <b>good</b> image:
<img src="cid:logo.png">
</body>
},
);

$msg->attach(
Type => 'image/png',
Disposition => 'attachment',
Filename => 'other.png',

Id => 'logo.png',
Path => '/home/king/perl/logo.png'
);

MIME::Lite->send('smtp', $host, Timeout=>60, AuthUser=>$user, AuthPass=>$pass);
$msg->send;

簡単でしょう?