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;

こんな感じ。