GmailのSMTPを利用してPerlからメール送信(添付ファイル付)

さて、前稿でモジュールの準備ができたのでPerlからGmail経由で添付ファイルを送る。

#!/usr/bin/perl

use lib '/home/xxxxxxxx/local/lib/perl5';
use Jcode;
use Net::SMTP;
use Net::SMTP::SSL;
use MIME::Entity;

my $smtp_server = 'smtp.gmail.com';
my $smtp_port = '465';
my $smtp_acc = 'gmail@example.com';
my $smtp_pwd = 'password';

my $mail_to = 'to@example.com';
my $mail_bcc = 'bcc@example.com';
my $mail_from = 'from@example.com';
my $mail_subject = '件名ですよ';
my $mail_body = <<"_MAILBODY_";
本文ですよ
_MAILBODY_

$mail_subject = jcode($mail_subject)->jis;
$mail_subject = jcode($mail_subject)->mime_encode;
$mail_to = jcode($mail_to)->jis;
$mail_to = jcode($mail_to)->mime_encode;
$mail_bcc = jcode($mail_bcc)->jis;
$mail_bcc = jcode($mail_bcc)->mime_encode;
$mail_from = jcode($mail_from)->jis;
$mail_from = jcode($mail_from)->mime_encode;
$mail_body = jcode($mail_body)->jis;

my $err;
my $oSmtp;
my $oMime;

$oSmtp = Net::SMTP::SSL->new($smtp_server,Port => $smtp_port, Debug => 1);

if($oSmtp->auth($smtp_acc,$smtp_pwd)){
  $oSmtp->mail($mail_from);
  $oSmtp->to($mail_to);
  $oSmtp->bcc($mail_bcc);
  $oSmtp->data();
  $oMime = MIME::Entity->build(
    From     => $mail_from,
    To       => $mail_to,
    Bcc      => $mail_bcc,
    Subject  => $mail_subject,
    Data     => $mail_body);
  $oMime->attach(
    Path     => '/home/xxxxxxxx/hogefuga.csv',
    Type     => "application/octet-stream",
    Encoding => "Base64"
  );
  $oSmtp->datasend($oMime->stringify);
  $oSmtp->dataend();
  $oSmtp->quit;
}else{
  $err = 'SMTP Server Authentication Error!!';
}

今回はCSVなのでContent-Typeはapplication/octet-streamに。
GmailのアドレスはGoogla AppsのでもOK。


問題なく稼動したのでcronにスケジューリング。
今夜から毎晩2:00にメールが届く予定。

参考にしたサイト