[Linux] shell 에서 메일 보내기

이용 가능한 SMTP가 있는 경우 shell 에서도 메일을 보낼 수 있다. 쉘 스크립트 상에서 메일을 보내거나 할 때 유용하다. 가장 편한 방법이 sendemail 을 이용하는 것 같다.
다음과 같이 하면 된다. 아래 예제는 무인증 SMTP를 이용할 경우의 예제이다.

$ sendEmail -f “보내는이@메일” -s <SMTP 서버 주소> -t “받는이@메일” -u “메일 제목” -m “메일 내용”

Perl script 를 이용해서도 간편히 보낼 수 있는데, 예제는 다음과 같다.

#!/usr/bin/perl -w
use Net::SMTP;
$smtp = Net::SMTP->new(‘<SMTP 서버 주소>’);
$smtp->mail(‘보내는이@메일’);
$smtp->to(‘받는이@메일’);
$smtp->data();
$smtp->datasend(“To: dasomoli\n”);
$smtp->datasend(“Subject: A simple test mail subject\n”);
$smtp->datasend(“\n”);
$smtp->datasend(“A simple test message\n”);
$smtp->datasend(“A simple test message 2\n”);
$smtp->dataend();
$smtp->quit;

한글 메일을 보내고 싶으면 perl 스크립트로 아래와 같이 MIME::Lite 를 사용하면 된다.

$ sudo apt-get install libmime-lite-perl

#!/usr/bin/perl -w
use MIME::Lite;
### Create a new multipart message:
$msg = MIME::Lite->new(
                From    => ‘보내는이@메일’,
                To      => ‘받는이@메일’,
                Subject => ‘Hangul test’,
                Data    => ‘한글’,
                );
$msg->attr(‘content-type.charset’ => ‘UTF-8’);
### Add parts (each “attach” has same arguments as “new”):
### use Net:SMTP to do the sending
$msg->send(‘smtp’, ‘<SMTP 서버 주소>’, Debug=>1 );

참고 : 
http://nixcraft.com/shell-scripting/11895-shell-script-send-email-via-smtp-username-password.html
http://caspian.dotconf.net/menu/Software/SendEmail/
http://perldoc.perl.org/Net/SMTP.html
http://search.cpan.org/~rjbs/MIME-Lite-3.028/lib/MIME/Lite.pm