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にメールが届く予定。
参考にしたサイト
- 鯖缶Blog - メール送信ライブラリ
- ActivePerlからメールを送る - 添付ファイル付のメールを送信する