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ファイル内をぶち込み試行。
とりあえず、これだけで完了しました。
参考にしたページ (ありがとうございます!)
- [perl] Net::SMTPでメールを送ろう
@ G-chan Square - perlでsmtpサーバーに接続して送信 @ えむけいプラン
- Net::SMTP->auth
(http://yoosee.net/d/archives/2004/08/25/002.html)
@ World Wide Waker - Authen::SASL @ CPAN
そんな訳で久しぶりの投稿になってしまいました。
Blog本体もPhoto Blogも。
Leave a Reply