ウェブ上の画像ファイルをメールとして送信するスクリプト

特定の URL にあるファイルを、そのままメール送信する Perl スクリプト。
メール本文テキストはなくて、ファイルのみからなるメールを作成します。
以前は、ファイル添付のメールを送るスクリプトはそれなりの長さになったけど、
今ではメール送信処理自体は3行で済むんですね。CPAN ありがたし。
#!/usr/bin/perl

use strict;
use LWP::UserAgent;
use MIME::Lite;

# 送信したいファイルのURL・ファイル名
my $url = 'http://www.kawa.net/xp/images/xp-title-256.gif';
my $file = ( $url =~ m#/([^/]+)$# )[0] || 'temp.dat';

# BASIC 認証が必要な場合は指定する
my $auth;
### $auth = [ 'user', 'passwd' ];

# メールの差出人・あて先アドレス
my $mail = {
    From => 'mail-from@example.com',
    To => 'mail-rcpt@example.com',
    Encoding => 'base64',
    Subject => $url,
    Path => $file,
};

# メール送信に利用するSMTPサーバ
my $smtp = [ smtp => 'blue.ocn.ne.jp' ];

# コンテンツをダウンロードする
my $ua = LWP::UserAgent->new();
my $req = HTTP::Request->new( GET => $url );
$req->authorization_basic( @$auth ) if ref $auth;
my $res = $ua->request( $req, $file ) or die;

# 取得失敗の場合はエラーメッセージを表示
if ( $res->is_error() ) {
    my $stat = $res->code();
    my $mess = $res->message();
    die "$stat $mess - $url\n"
}

# 添付ファイルを付けてメールを送信する
$mail->{Type} ||= $res->content_type();
MIME::Lite->send( @$smtp );
my $msg = MIME::Lite->new( %$mail ) or die;
$msg->send() or die "$!\n";


BASIC 認証にも対応。
Munin で生成した画像ファイルを cron で定期的に Gmail に送って蓄積したかったので。

画像ファイルだけでなく、HTML の URL を指定すれば HTML メールも送れるが、
相対パスの処理などは行われないので、画像やリンク先URLは要注意。
 

ブログ気持玉

クリックして気持ちを伝えよう!

ログインしてクリックすれば、自分のブログへのリンクが付きます。

→ログインへ

なるほど(納得、参考になった、ヘー)
驚いた
面白い
ナイス
ガッツ(がんばれ!)
かわいい

気持玉数 : 0

この記事へのコメント

この記事へのトラックバック