Noël Café : Blog

Noëlの公開備忘録とひとりごと。コメント・トラックバックご自由に

PerlでSMTP-AUTH認証をする

Noel Cafeで使用しているサーバーLolipopがパワーアップした。
いろいろ喜ばしいことではあるが、
自作CGIの改良が必要になってしまった。
Photo Blogでは
添付付きメール送信→Perl(自作)
 →Movable Type投稿→Twitpic投稿
 →その他サービスへメールで投稿
という仕組みになっている。
「メールで投稿」をLolipopメールを使用しているのだが
認証方法がPOP before SMTPからSMTP-AUTHに変わった。
このために、スクリプトの書き換えが必要になった。
以下、Perl で SMTP-AUTH認証+αの覚書。


おおよそのスクリプトは以下のとおり。
$smtp->to(…)の前に、$smtp->auth(…)を入れます。
(下の例では4行目です)
(私はスクリプトがすっきりするので
MIME::Entityを使用します。)

use NET::SMTP;
use MIME::Entity;
my $smtp = Net::SMTP->new($SENDM_S_SERVER, Port=>$SMTP_PORT);
$smtp->auth($SMTP_USER, $SMTP_PASS);
$smtp->mail($MAIL_FROM);
$smtp->to($MAIL_TO);
$smtp->data();
my $mail_data = MIME::Entity->build(
From     => $MAIL_FROM,
To       => $MAIL_TO,
Subject  => $MAIL_SUBJECT,
Type     => 'text/plain;charset="iso-2022-jp"',
Data     => $MAIL_BODY,
Encoding => "7bit"
);
$mail_data->attach(
Path => $IMAGE_PATH ,
Type => 'image/jpeg',
Encoding => 'Base64'
);
$smtp->datasend($mail_data->stringify);
$smtp->dataend();
$smtp->quit;

さて、書いたもののエラーは出ないのに動かない・・・。
ぐぐったところSMTP-AUTH認証にはAuthen::SASLが必要らしい。
レンタルサーバーなのでインストールは出来ないが、
mt/extlibを参照しているスクリプトなので、
mt/extlib内にAuthen::SASLのlibファイル内をぶち込み試行。
とりあえず、これだけで完了しました。


参考にしたページ (ありがとうございます!)


そんな訳で久しぶりの投稿になってしまいました。
Blog本体もPhoto Blogも。

Leave a Reply

*


CAPTCHA



Trackback URL