2018年7月4日水曜日

Perl でメール送信(Net::SMTP編)

Net::SMTP を使ったサンプルコードを記載。モジュールは標準でインストールされているはずなので、CPANから追加なしで使えるはず。


#!/usr/bin/perl
#
# メール送信サンプル
#
use Encode;
use Net::SMTP;
use strict;
use warnings;
use utf8;

# サブルーチンを呼んでメールを送る
&mailSend();


sub mailSend {
   # メールを作成します。
   #
http://chaichan.lolipop.jp/perlnote/perlnote2007-09-02.htm を参考にする
   # 複数アドレスの送信ができるよう、ヘッダー部とNet::SMTPに送るデータが若干
   # 違うのがミソ

   my $from    = 'root@foo.com';
   my $mailto  = 'user01@bar.com, user02@bar.com';
   my @mailto  = split(',', $mailto);
   my $subject = Encode::encode('MIME-Header-ISO_2022_JP', 'メール送信テスト');
   my $header  = "From: $from\n" .
                 "To: $mailto\n" .
                 "Subject: $subject\n" .
                 "Mime-Version: 1.0\n" .
                 "Content-Type: text/plain; charset = ISO-2022-JP\n" .
                 "Content-Trensfer-Encoding: 7bit\n";
   my $message = <<"BODY";
テストで送信するメールです

ここに本文を記載します。本文はヒアドキュメントを
利用して作成しています。

※本メールへの返信はしないでください。
BODY

  my $body = Encode::encode('iso-2022-jp', $message);

  # SMTPサーバに接続します。FQDNではなくIPアドレスでもok
   my $smtp = Net::SMTP->new('smtp.foo.com');
   if ( !$smtp ) {
        print "メールサーバーにアクセスできません\n";
   }

  # メールを送信します。
   $smtp->mail($from);
   $smtp->to(@mailto);
   $smtp->data();
   $smtp->datasend($header);
   $smtp->datasend($body);
   $smtp->dataend();
   $smtp->quit;
}

0 件のコメント:

コメントを投稿