ウェブ上の画像ファイルをメールとして送信するスクリプト
<<
作成日時 : 2007/04/30 02:39
>>
トラックバック 0 / コメント 0
特定の 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は要注意。
|