Net::SMTPSを使って SMTP-AUTH

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

カテゴリ:

さくらインターネットのスタンダードプランのメールアカウントでSMTP-AUTHでメールを送信するためのPerlのモジュールのお話。

すでに非推奨の

を修正した

もやはり非推奨で、さらにそのラッパーである

も、当然非推奨になっている。

かわりに推奨されているのが

であり、より低レベルなAPIの

である。

もし、GmalでSMTP-AUTHで送信するのであれば、Email::Sender::Transport::SMTPSがそのまま使えて、作者のページのサンプルコードにあるように、

use Email::Sender::Simple qw(sendmail);
use Email::Sender::Transport::SMTPS;
use Try::Tiny;

my $transport = Email::Sender::Transport::SMTPS->new({
  host => 'smtp.gmail.com',
  ssl  => 'starttls',
  sasl_username => 'myaccount@gmail.com',
  sasl_password => 'mypassword',
});

use Email::Simple::Creator; # or other Email::
my $message = Email::Simple->create(
  header => [
    From    => 'fromme@myhost.com',
    To      => 'toyou@yourhost.com',
    Subject => 'Subject title',
  ],
  body => 'Content.Email::Sender::Transport::SMTPS',
);

try {
  sendmail($message, { transport => $transport });
} catch {
  die "Error sending email: $_";
};

これで、メールを送信することができる。 「 Gmailの場合は

さくらインターネットのSMTP-AUTHではMD5系は使えない

Gmailでメールを送る場合は上のコードでよいのに、さくらインターネット スタンダードプランのメールサーバで送るときは、うまくいかない。原因は、PLAINかLOGINの認証方式しか受け付けないから。

Email::Sender::Transport::SMTPS は便利なのだが、SMTP-AUTHの認証方式を指定してオブジェクトを生成できないっぽい。ので、より低レベルなNet::SMTPSを使って書くしかなさそう。

use Net::SMTPS;

my $ssl = 'starttls';   # 'ssl' / 'starttls' / undef

my $smtp = Net::SMTPS->new('myhost.jp', Port => 587, doSSL => $ssl);
my $auth_method = 'LOGIN';
$smtp->auth('userid', 'password', $auth_method);
$smtp->mail('fromme@myhost.jp');
$smtp->to('toyou@myhost.jp');
$smtp->data();
$smtp->datasend("Subject:A simple test message\n\n");
$smtp->datasend("A simple test message $auth_method\n");
$smtp->dataend();
$smtp->quit;

Net::SMTPSオブジェクトには、authというメソッドがあって、そのメソッドの3番目の引数が、認証方式になる。

$smtp->auth( USERNAME, PASSWORD [, AUTHMETHOD])

3番目の認証方式の引数は指定しなくてもいいが、その場合はデフォルト値のCRAM-MD5となる。

認証方式は

  1. PLAIN
  2. LOGIN
  3. CRAM-MD5
  4. DIGEST-MD5

のいずれかの中から選ぶが、さくらインターネットのレンタルサーバのメールサーバは、受け付けられる認証方式が1か2なので、PLAINかLOGINを指定する。そうすれば、念願のSMTP-AUTHを利用したメールの送信ができる。

comments powered by Disqus

トラックバック(0)

このブログ記事を参照しているブログ一覧: Net::SMTPSを使って SMTP-AUTH

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

comments powered by Disqus

このブログ記事について

このページは、Shinichi Nozawaが2014年4月 7日 23:15に書いたブログ記事です。

ひとつ前のブログ記事は「Net::SMTP::TLSを使って SMTP-AUTH(非推奨)」です。

次のブログ記事は「Mac のExcelで作ったCSVを適切にPerlで読むには?」です。

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