うまいぼうぶろぐ

linuxとhttpdとperlのメモ

最近のCPANモジュールを使ったメール送信

perl-users でEmail::Send 使えばいいよって書いてたので、Email::Sendを使ってたんですが、ふとperldoc Email::Send みてたら

Email::Send is going away... (略)
As of today, 2008-12-19, Email::Sender is young, but it's fairly well-tested. Please consider using it instead for any new work.

と書いてるのでEmail::Sender 使おう。

  • perldoc Email::Sender::Simple
  • perldoc Email::Sender::Manual
  • perldoc Email::Sender::Manual::QuickStart

あたりを読んでいって、こうなる。
(というかE::S::M::QuickStart のperldocまんま)

sendmail($email) だけだとenvelope-from が指定されないので、明示的にenvelope-from を指定する場合はハッシュでfrom アドレスを渡す。

use strict;
use Email::Sender::Simple qw(sendmail);
use Email::Simple;
use Email::Simple::Creator;

my $email = Email::Simple->create(
  header => [
    To      => '"Xavier Q. Ample" <x.ample@example.com>',
    From    => '"Bob Fishman" <orz@example.mil>',
    Subject => "don't forget to *enjoy the sauce*",
    ],
  body => "This message is short, but at least it's cheap.\n",
);

my $sender = 'sender@example.com';
sendmail($email, { from => $sender} );

追記

install してわかったけど、Email::Sender はMoose 使っているので、ちょっとしたmail送りたいだけなら大げさかなーとも思った。まぁ初めにcpanm Email::Sender するだけなので良いんですが。