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