いともあっさりMT::Mailが使えた

| | トラックバック(1)

カテゴリ:

CGIを使ったメールを送信するプログラムを作りたいなと思っていた。
だけど、メールの送信は文字コードの問題とか、
SendmailとかSMTPとかいろいろややこしい問題があることも
知っていて、なんとか簡単に
めんどくさいコード書かずにできないかなと思っていた。

それで、MTが持っているメールの送信機能を使ってできないかな?
と思ったらすげーあっさりできたのでウハウハ。

MT::Mailというモジュールがあって、それをuseしてあげれば
SendmailやSMTPや文字コードのことを何も考えなくても
メールを送ることができます。

Movable Type オブジェクト・リファレンス - MT::Mail
MT::Mail - movabletype.org

ソースはこんな感じです。
mt-mail.txt
拡張子を「.cgi」に変えて、パーミッションを755とかにして、
MTのlibの位置とメールアドレスを修正すれば使えます。

#! /usr/bin/perl

use CGI;
use lib '../../mt/lib'; #MTのlibフォルダまでの相対 or 絶対パス
use MT::Mail;

my $q = CGI->new;

print $q->header( -charset => 'utf-8'), $q->start_html( -lang => 'ja', -encoding => 'utf-8');
print $q->h1("MT::Mailを使ってみるテスト");
&body($q);
print $q->end_html;

sub body{
  • my $q = shift;

    my $head = {
    • To => 'to@example.jp', #ここは適宜書き換えてね
      Subject => 'From MT::Mail', #ここも任意
      #From => 'from@example.jp' #なくても動作しました
    };
    my $body = 'MT::Mailを使ったテストメールだよ';

    my $flag;
    $flag = MT::Mail->send( $head, $body)
    or print $q->p("送れなかったーよ: ".MT::Mail->errstr);

    print $q->p("送れたみたい") if $flag;
}

送信先のメールアドレスとメールタイトル、そしてメールタイトルの
文字列を与えてやればそれでOK。
文字コードの心配も必要なしで、
文字列に日本語が使われていても受信したメールの文字化けはなかった。

こうやってMTライラリ中のモジュールを外から使うスキルがあれば、
いろいろ楽になりそうだな。

***
use CGIについては以下の記事
http://nozawashinichi.sakura.ne.jp/usingmt/2009/09/use-cgicharset.html

comments powered by Disqus

トラックバック(1)

このブログ記事を参照しているブログ一覧: いともあっさりMT::Mailが使えた

このブログ記事に対するトラックバックURL: http://nozawashinichi.sakura.ne.jp/MT-4.25/mt-tb.cgi/662

最近、MovableTypeって実はほとんど日本でしか使われていないという事実に... 続きを読む

comments powered by Disqus

このブログ記事について

このページは、Shinichi Nozawaが2009年11月19日 02:42に書いたブログ記事です。

ひとつ前のブログ記事は「Google Analytics APIを使う:認証」です。

次のブログ記事は「なぜ空(無名)ハッシュを返すのか」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。