Net::SMTP
仕事で、毎週月曜日に同じ文面の連絡メールを送らないといかんのですが、
スクリプト書いて自動実行したらいいんじゃね?と思ったので書いてみた。
use strict; use warnings; use Net::SMTP; use Jcode; my $host = 'SMTP鯖のホスト名'; my $smtp = Net::SMTP->new( Host => $host, Timeout => 30, Debug => 1, ) or die qq/error:couldn't connect $host/; my $to = 'to@example.com'; my $from = 'from@example.com'; my $subject = '件名ですよ'; my $body = '本文ですよ'; $subject = Jcode->new($subject)->mime_encode; $smtp->mail($from);#送信元の設定 $smtp->to($to); #送信先の設定 $smtp->data; # ---ヘッダ-------- $smtp->datasend("To: $to\n"); $smtp->datasend("From: $from\n"); $smtp->datasend("Subject: $subject\n"); $smtp->datasend("Content-Type: Text/Plain\n\n"); # ---本文-------- $smtp->datasend("$body\n"); $smtp->dataend; $smtp->quit;
ほぼpodのEXAMPLESのコピペ。
楽ちん。
注意としては、メールのヘッダ部分に日本語そのまま書くと文字化けしてしまいます。
文字化けしないようにするには、
文字コードをISO-2022-JPに変換してさらにBase64エンコードする必要があるんですが、
Jcodeを使えば簡単に処理してくれます。
$subject = Jcode->new($subject)->mime_encode;
こんな感じ。