2011年 4月 5

id:tokuhirom氏作の Email::MIME::MobileJP::Template を発見したので使ってみる。

PODにあるコードは動作しないので注意。renderメソッドのAPIが変わったのかな?ソースを見ると引数の最初に送り先のメールアドレスを指定しないとダメみたい。

それと、Email::MIME::MobileJP にあるソースも間違えているので注意。syntax=>’TTerse’ は newする時に引数で指定する事。

use Email::MIME::MobileJP::Template;
use Email::Sender::Simple;

    my $token='123';
    my $to_email = '<foo@hoge.jp>'; # <>で囲わないとdocomoで受信したときToがおかしなことに。

    my $mail_maker = Email::MIME::MobileJP::Template->new(
                    'Text::Xslate' => {
                            syntax => 'TTerse',
                            path => ['email_tmpl/']     # テンプレートの保存場所
                    }
    );

    my $mail = $mail_maker->render(
                    $to_email,                  # 送信先
                    'signup.eml',               # テンプレートファイル
                    {token => $token}    # テンプレートで利用する変数
    );
    # メールを送信
    Email::Sender::Simple->send($mail);

テンプレートファイル

path で指定したディレクトリにテンプレートファイルを作成する。MIMEヘッダはテンプレートでしか指定できない。Fromは記述しないと致命的なエラーとなるので注意。

./email_tmpl/signup.eml

Subject: [Example] サインアップ!
From: <name@hoge.com>

    以下をクリックせよ
    http://example.com/signup/[% token %]

携帯電話宛のメールが正しく送れない?


メールテンプレートで、Fromに指定するメールアドレスは<>で囲わないとdocomoへ送ったときにUnknown user となってしまった。from=<> となっている。これは自分の環境の問題?

エラーになったテンプレートファイル例

Subject: [Example] サインアップ!
From: name@hoge.com

    以下をクリックせよ
    http://example.com/signup/[% token %]

Postfixのエラーログ

Apr  5 17:44:56 vm postfix/smtp[24073]: 7D4ED32358D: to=<xxxxx.@docomo.ne.jp>, relay=mfsmax.docomo.ne.jp[203.138.180.112]:25, delay=0.17, delays=0.09/0.01/0.03/0.04, dsn=5.0.0, status=bounced (host mfsmax.docomo.ne.jp[203.138.180.112] said: 550 Unknown user xxxxx.@docomo.ne.jp (in reply to end of DATA command))
Apr  5 17:44:56 vm postfix/cleanup[23741]: A169832358F: message-id=<20110405084456.A169832358F@mail.hoge.jp>
Apr  5 17:44:56 vm postfix/qmgr[1698]: A169832358F: from=<>, size=2480, nrcpt=1 (queue active)

あと、送信先のメールアドレスは

my $to_email = '<foo@hoge.jp>';

のように指定しないと携帯(docomoムーバ)で受信したときにおかしな挙動となる。メールを開くと返信不可マークのToヘッダが表示されている(メールアドレスは送った携帯のメアド)。返信しようとすると返信先を選択する画面になる。

メール送信の実装はガラケーとカオスな文字コードのおかげでやたらと面倒なことが多い。

More from my site

  • YAPC::Asia 2014に行ってきたよ!2日目YAPC::Asia 2014に行ってきたよ!2日目 2日目も参加しました! 聞いた、参加したトーク&イベント オープンソースの開発現場 - Perl 5.20 のSubroutine Signaturesが来るまでの奮闘の軌跡 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情 地域.pmミートアップ 2014 Perlあるある Mobile Application […]
  • Gunma.web#13に行ってきたよGunma.web#13に行ってきたよ Gunma.web #13 : […]
  • Perl Beginners #7へ行ってきたPerl Beginners #7へ行ってきた ATND Perl Beginners #7 日時 :2013/03/29 19:00 to 21:00 会場 :東京都中央区京橋区民館1号室 オープニング 主宰の@ytnobodyさんによるオープニングで始まりました。表番組が同日に開催されていたのでこちらは裏番組と言う事みたい。今回のPerl […]
  • Perl Beginners #7でLTしたPerl Beginners #7でLTした 会場には一番乗りで到着しました。スマホのお陰で電車も会場も迷うこと無く到着。ホント便利な世の中になりました。Perl Beginnersのブログを読むと、時間が余った場合は飛び込みLT募るとの事で、スライド用意して行ったのですが、一発目に発表になるとは...。 スライド Perl Beginners #7 おとなのWAF from Munenori […]
  • perl の配列処理で 標準モジュール List::Util を使う理由perl の配列処理で 標準モジュール List::Util を使う理由 以前に配列をシャッフルの記事( http://perl.no-tubo.net/2010/01/08/pelrで配列をシャッフル/ )を書いたのだけれど、その時にコメントで List::Util を使いましょうよ、と頂いた。 そういうものもあるのか、と思っていたのだけれど理由があったので軽く調べてみた。 perl […]
  • [Perl] DBIx::SkinnyでGROUP BY句を使うには[Perl] DBIx::SkinnyでGROUP BY句を使うには ※何故か記載が全体的にORDER BY句になっていたので修正... DBIx::SkinnyでGROUP BY句を使う DBIx::SkinnyでGROUP […]

Filed under: perl,perlモジュール

Trackback Uri



コメントする